Mar Abr 04, 2006 10:19 am
|
 |
fcardenas79
Perlero Nuevo

|
Registrado: 04 Abr 2006
Mensajes: 2
|
|
| Ayuda CGI::SESSION |
|
|
Gente, necesito una ayuda urgente, es sobre manejo de sessiones, ya esta instalado el CGI::SESSION, por favor, es urgente sus apoyos.
En esta Pagina1.cgi, trato de guardar el $user a una session. Diganme, ¿es necesario usar Cookies? ... bueno, solo necesito que se guarde ese dato en session, nada más. Luego en la pagina2.cgi quiero recuperar ese valor guardado en session, pero no me sale el valor. Diganme en que estoy fallando o cual es la mejor manera de solucionar este problema, por favor, necesito ese apoyo urgente, agradeceria mucho su ayuda ....
Saludos
Fausto C.
Pagina1.cgi
| Código: |
#!/usr/bin/perl
use CGI qw(:standard);
$cgi = new CGI;
use CGI::Session;
$path_session = "/home/user/";
$user = "Fausto Cardenas";
my $cookie = "";
$session = new CGI::Session("driver:File",undef,{'Directory'=>"$path_session"});
if ($q->cookie('CGISESSID')) {
$cookie = $cgi->cookie('CGISESSID');
$session->id($cookie);
}else{
$cookie = $cgi->cookie(-name=>'CGISESSID',-value=>$session->id());
}
unless ($session->param('fecha')){
$session->param(-name => 'fecha' , -value => scalar(gmtime()));
}
$session->param('login',"$user");
$session->expire('+1m');
$sid = $session->id();
$session->save_param($cgi, ["login"]);
print STDOUT "Content-type: text/html \n\n";
print STDOUT "Hola mundo cruel";
print STDOUT $user;
print STDOUT "<a href=session3.cgi?sid=$sid>pagina 2</a>"; |
pagina2.cgi Aqui no sale la session....
| Código: |
#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Session;
$path_session = "/home/user/";
$form = new CGI;
$scookie = $form->param('sid');
#CGI::Session->name($scookie);
CGI::Session->name('sid');
$session = new CGI::Session("driver:File",$scookie,{'Directory'=>"$path_session"}) or die "$!";
$login = $session->param('login');
#CGI::Session->name($id);
#$sid = $cgi->cookie("CGISESSID") || undef;
#$session = new CGI::Session(undef, $sid, {Directory=>'/tmp'});
print STDOUT "Content-type: text/html \n\n";
print STDOUT "Hola mundo cruel";
print STDOUT $login; |
|
|
|
|

Mar Abr 04, 2006 10:32 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
¿El cgi tiene permiso de escritura en /home/user/??? Para conseguirlo, el cgi debe tener como propietario user y poder ser ejecutado por el usuario que ejecuta el servidor web.
Si ejecutas el Programa1 ¿Aparece algún fichero de sesión en el directorio /home/user? |
|

Mar Abr 04, 2006 10:47 am
|
 |
fcardenas79
Perlero Nuevo

|
Registrado: 04 Abr 2006
Mensajes: 2
|
|
|
|
|
| explorer escribió: | ¿El cgi tiene permiso de escritura en /home/user/??? Para conseguirlo, el cgi debe tener como propietario user y poder ser ejecutado por el usuario que ejecuta el servidor web.
Si ejecutas el Programa1 ¿Aparece algún fichero de sesión en el directorio /home/user? |
Hola explorer
Bueno, no puedo entrar al nivel de ese home/user por la restriccion del FTP...
bueno, en si estoy haciendo una pequeña prueba de guardar solo una variable a SESSION y he probado varios metodos y no funciona, no se como puedo realizar una SESSION de la manera mas simple, me es recontra urgente.. que me puedes recomendar y si hay algun ejemplo o si mi codigo esta mal.
en mi primera pagina cuando ejecuto, todo me sale ok, sin errores y me sale el nombre que lo guarde dentro de
$session->save_param($cgi, ["login"]);
pero en la siguiente pagina no sale nada.. no se como hacer el get de la session.
Por favor help me.. me es necesario este codigo sino me matan  |
|

Mar Abr 04, 2006 10:56 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
| Por de pronto, repasa el tutorial, que se publicó ayer la última versión, mientras miro alguna cosilla... |
|
Mar Abr 04, 2006 11:03 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Veo en http://search.cpan.org/~markstos/CGI-Session-4.11/lib/CGI/Session/Driver/file.pm que a la hora de almacenar las sessiones usando el driver file, este lo hace en ficheros de la forma cgisess_%s, siendo %s el ID de la sesión. Bueno, pues primero tienes que comprobar que Programa1 crea efectivamente esos ficheros. Y segundo, el Programa2 debe conocer el ID de session del primero para poder acceder a esos datos. Seguramente te falta hacer un load_param() después, pero ahí ya no estoy seguro...
Sigo mirando... |
|

Mar Abr 04, 2006 3:22 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
Esto es un ejemplo funcional, pero es mucho mejor seguir el tutorial.
Programa1.cgi:
| Código: |
#!/usr/bin/perl
use CGI;
use CGI::Session;
my $cgi = new CGI;
my $session = new CGI::Session("driver:File",undef,{'Directory'=>'/tmp/'});
my $login = $cgi->param('login');
$session->save_param();
print $session->header;
print $cgi->start_html('Test'),
"Hola mundo cruel $login",$cgi->br;
printf ("<a href=\"Programa2.cgi?%s=%s\">click me</a>", $session->name, $session->id);
print $cgi->end_html; |
Programa2.cgi:
| Código: |
#!/usr/bin/perl
use CGI;
use CGI::Session;
my $cgi = new CGI;
# Recuperar la sesión
$CGISESSID = $cgi->param('CGISESSID');
my $session = new CGI::Session("driver:File", $CGISESSID, {'Directory'=>'/tmp/'});
my $login = $session->param('login');
print $cgi->header;
print $cgi->start_html('Test'),
"Hola de nuevo $login",$cgi->br;
print $cgi->end_html;
$session->delete(); |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|