Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

CGI::Session small problem...

by pedrete (Initiate)
on Feb 24, 2013 at 13:04 UTC ( #1020396=perlquestion: print w/ replies, xml ) Need Help??
pedrete has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks...

May i ask for 10nanoseconds of your wisdom, please???

I am having a small problem with CGI::Session and i am stuck... (for 3 days now)

I have an html page (login.html) that asks for user and password. When entered, login.pl checks for them, if they are correct then it creates a sesion and launches web.pl

web.pl checks if the session is valid. if so, then it shows the webpage but if not, it redirects to login.html

The problem is that it seems that the session created by $sesion=new CGI::Session(); is always empty when checked by web.pl . why???

Curiously, if the user enters the process twice (with correct credentials of course) then it works!!!

login.pl:
#!/usr/bin/perl use warnings; use CGI; use CGI::Session; $cgi=new CGI; if (CredentialsOK($user,$pwd)){ $sesion=new CGI::Session(); $sesion->param('userlogged',$user); print $sesion->header(-location=>"web.pl"); $sesion->flush(); } else { print $cgi->redirect(-uri=>"login.html"); }
web.pl
#!/usr/bin/perl use warnings; use CGI; use CGI::Session; use HTML::Template; $cgi=new CGI; $sesion=CGI::Session->load($cgi); $plantilla=HTML::Template->new(filename => 'web.html'); $sesion=CGI::Session->load(); if (($sesion->is_expired) || ($sesion->is_empty)) { print $cgi->redirect(-uri=>"login.html"); } else { print $cgi->header(); print $plantilla->output(); }

Thanks to all in advance!!

Pedrete.

Comment on CGI::Session small problem...
Select or Download Code
Re: CGI::Session small problem...
by moritz (Cardinal) on Feb 24, 2013 at 13:12 UTC

      Thanks MOtirz

      I think the cookie gets to the user browser when i use the line
      print $sesion->header(-location=>"web.pl");

      And in fact i have checked and the cookie in the browser is ok... ans so in the server /tmp folder...

      Thanks,

      Pedrete

        You should monitor the HTTP requests with a browser extension such as LiveHTTPHeaders or just capture the network traffic with Ethereal. Paste the whole conversation from the first request (login.html) to the one hitting web.pl; we could perhaps figure out what's wrong. (Use a dummy username + password.)

Re: CGI::Session small problem...
by fishmonger (Pilgrim) on Feb 24, 2013 at 17:17 UTC

    Why are you attempting to load the session twice?

    Remove the second call to CGI::Session->load() and add the strict pragma and fix the var declarations as needed (i.e., declare them with the 'my' keyword)

      Another suggestion to try is put your $sesion->header(...) statement after the flush statement

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1020396]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2014-12-22 10:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (114 votes), past polls