[caracas-pm] Problema
Gustavo Delfino
gdelfino at mac.com
Wed Oct 26 06:20:44 PDT 2005
Manuel, no se cual es el problema, pero te puedo recomendar mover la
rutina IniciaSesion al run-mode especial llamado cgiapp_prerun. De
esta forma se ejecuta siempre independientemente del runmode
seleccionado. A mi Apache::Session::mysql me funciona bien, pero no
he usado CGI::FormBuilder.
Saludos,
Gustavo Delfino
On Oct 26, 2005, at 7:45 AM, Manuel Telleria wrote:
> 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
> ===================================
> #! /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;
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/caracas-pm/attachments/20051026/90f876ba/attachment-0001.html
More information about the caracas-pm
mailing list