Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

session parameter lost

by *alexandre* (Novice)
on Jun 01, 2013 at 19:45 UTC ( #1036491=perlquestion: print w/replies, xml ) Need Help??
*alexandre* has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I'm getting a new error while executing my code, I'm trying to initialize a session in my module LoadPage like this way
$session = new CGI::Session("driver:File", $session_id, {Directory=>"$ +session_dir"}); if ($session_id eq '' or $session_id eq '$SESSIONID') { $session_id = $session->id(); }
at the begining of the package then I've a login method still in this package
#sql code to retrieve user info and compare to the password if ($user_name && $user_password) { #put into session the username and different variables $session = new CGI::Session("driver:File", $session_id, {D +irectory=>"$session_dir"}); $session->expire('+2h'); local our $id = $session->id(); $session->param( "username", "$user_name"); $session->param( "level", "$level"); $session->param("ip", "$current_ip"); clearBasket($user_name);
if I print into the browser the value of the parameter stored in the session into this function it's work but when I load another page and call the method loadPersonal I lost the data
sub loadPersonalData { open (FILE, "<$dir/personal_data.html") or die "cannot open fi +le $dir/personal_data.html"; local our $selectionIndex = $articleClass->loadArticleSelection(); +; local our $selection = $articleClass->viewArticleSelectionByIndex( +);; local our $menu = $lp->loadMenu(); local our $content; $session = new CGI::Session("driver:File", $session_id, {Directory +=>"$session_dir"}); local our $username = $session->param('username'); print "Content-Type: text/html\n\n"; print "session id $session_id<br/>"; print "username $username<br/>"; print "session dir $session_dir<br/>";
It's print the $session_dir and $session_id but not the username any idea ? That's strange because the session id doesn't change between the loading of the other page

Replies are listed 'Best First'.
Re: session parameter lost
by moritz (Cardinal) on Jun 01, 2013 at 20:18 UTC
    $session_id eq '$SESSIONID'

    What are you intending to do with that comparison? Single quotes don't interpolate, so you are comparing with the literal value $SESSIONID, not with the contents of a variable.

    Maybe some fearless monk can find other problems with your code that prevent it form working, but if I were to debug it, I'd need a self-contained script that I can run and reproduce the problem with. So, please provide that.

    With a bit of luck, the process of producing a minimal example even makes it obvious what's wrong.

    Oh, and finally: What's the reason for using local our all over the place? Lexical variables with my are fine, and avoid some hard-to-debug problems.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1036491]
Approved by moritz
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2017-08-23 08:59 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (350 votes). Check out past polls.