[caracas-pm] Problema

Manuel Telleria manuel.telleria at gmail.com
Wed Oct 26 04:45:56 PDT 2005


 Estimados todos,

Tengo el siguiente problema,

Estoy usando CGI::FormBuilder y Apache::Session::Postgres.

El programa comienza con el runmode = "comienzo" que es el run mode por
omision, lo primero que se ejecuta en este run mode, es la función
IniciaSesion, la cual me genera una sesión con el módulo
Apache::Sesion::Postgres, ahora bien cuando ejecuto el programa con el
bloque de codigo comentado (ver programa)) todo esta bien en cuanto a la
generación de la sesion es decir me retorna el Dumper(%my_session) y
verifico que esta sesión existe en la base de datos "sessions", me explico,
si hago un select sobre la tabla donde Apache guarda las sesiones existe y
la puedo ver. El problema esta cuando descomento el bloque de código al que
me refiero, que no es mas que el llamado al new del CGI::FormBuilder.

Al hacer la ejecución del programa con el bloque de código descomentado a
pesar de que me muestra un arreglo de sesión con el Dumper, cuando trato de
verificar la existencia de esta sesión en la base de datos "sessions" esta
no existe, la verdad es que no logro entender que sucede , que tiene que ver
el llamado a CGI::FormBuilder sobre la generación de la sesión si se supone
que la generó ya que el arreglo %my_session tiene valores.

Otro dato cuando reviso el archivo error.log de apache no encuentro ningun
error que haga referencia a problemas con la conexion o con el insert en la
tabla de sessions.

Datos tecnicos
SO Debian sarge
Apache2 con modperl2
todos los módulos fueron instalados con apt-get install


A continuación el código. Y Gracias de antemano al que pueda ayudarme.

manuel.pl
===================================
#!/usr/bin/perl -w -I ./ctrl

use CGI::Carp qw(fatalsToBrowser);
use manuel;
use CGI '-debug';
my $q = new CGI;
my $obj = manuel->new (
TMPL_PATH => '/cgi-bin/inicio_sesion/tmpl/',
PARAMS => {
titulo => "Inicio de Sesion",
accion => "manuel.pl"
} );
$obj->run;

manuel.pm <http://manuel.pm>
===================================
#! /usr/bin/perl -w -I .
BEGIN {unshift @INC, "/usr/lib/cgi-bin/model/"; };

package manuel;

use strict;
use warnings;
use base 'CGI::Application';
use CGI::FormBuilder;
use Data::Dumper;
use CGI::Cookie;
use Error;
use Apache::Session::Postgres;
my %my_session;
my $sMensaje = '';

############################################################################
###
# Función setup : esta función es la que controla el flujo del programa,
depen-
# diendo del rm (run mode).
############################################################################
###

sub setup {
my $self = shift;
$self->start_mode('comienzo');
$self->run_modes(
comienzo => 'comienzo',
);
$self->mode_param('rm');
}

############################################################################
###
# Función comienzo : esta función es la que da inicio al programa. Es la que
se
# ejecuta en caso de que no se haya escogido ningun rm (run mode).
############################################################################
###
sub comienzo {
my $self = shift;
my $q = $self->query;

&IniciaSesion($self);

****BLOQUE QUE SE COMENTA PARA QUE FUNCIONE

# my $form = CGI::FormBuilder->new( method => 'post',
# name => 'myforma',
# sticky => 0,
# enctype => 'multipart/form-data',
# selectnum => 1,
# fields => [qw/scorreo scontrasena serrortxt SubmitBtn nintentos/],
# validate => { scorreo => 'EMAIL',
# scontrasena => 'VALUE',
# },
# messages => '/usr/lib/cgi-bin/lib/mensajes.es',
# template => '/usr/lib/cgi-bin/tmpl/sesion.tmpl',
# );

*******FIN BLOQUE


return Dumper(%my_session); ----Linea que retorna el arreglo de la sesion
solo para debuger.

programa continua ....

return $form->render;

}

############################################################################
###
# Función cIniciaSesion :
############################################################################
###
sub IniciaSesion{
my $self = shift;
my $q = $self->query();
my $dsn = "dbi:Pg:dbname='sessions';host='postgres.desarrollo'";

my $id = ($q->param('_sessionid')) ? $q->param('_sessionid') : 0;

eval{
tie %my_session, 'Apache::Session::Postgres', $id, {DataSource => $dsn,
UserName => 'usuario',
Password => '123456',
Commit => 1 };
};

if ($@){
$sMensaje = Error::getError(10);
}
}

1;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/caracas-pm/attachments/20051026/ef359e12/attachment.html


More information about the caracas-pm mailing list