[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