Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^3: ie with cgi::session not showing same session id which it was set and firefox doesn't show at all

by Anonymous Monk
on Aug 22, 2013 at 02:46 UTC ( #1050446=note: print w/ replies, xml ) Need Help??


in reply to Re^2: ie with cgi::session not showing same session id which it was set and firefox doesn't show at all
in thread ie with cgi::session not showing same session id which it was set and firefox doesn't show at all

Am i correct that you are saying

I am saying you should employ the Dumpering debugging strategy cause I don't see no Dumpering output in your response

Dumpering is debugging step number one

Dumper your CGI object, Dumper your session object, Dumper whatever else thats important

Basic debugging checklist item 4 ( Dumper )

Then realize the problem, or show me so I can realize the problem for you

print $query->escapeHTML( scalar Dumper( $query, $session ) )

Could you please ...

No thanks ; programming is a process, the only way to get a handle on it is to do these steps yourself;

What you posted doesn't compile, which means you didn't run what you posted to figure out how this works -- that it is working --

Which means you're probably trying to debug this problem in your larger code

That is tough/hard way to go about it; you can read more about this scenario in Re^3: CGI::Session "cache" issue


Comment on Re^3: ie with cgi::session not showing same session id which it was set and firefox doesn't show at all
Re^4: ie with cgi::session not showing same session id which it was set and firefox doesn't show at all
by msinfo (Sexton) on Aug 23, 2013 at 00:26 UTC

    Thanks for Data::Dumper, info.

    After reading CGI::Session twice, dumper data, started to give clues, and using debugging i could solve my session management problem.

    But don't know why still, around 6 out of 10, scenarios fails completely in browser and command line mode. No existing session data is captured, or even when session is set to expire in 5 hours, it still creates new session

    $VAR1 = bless( { '_STATUS' => 1, '_OBJECTS' => {}, '_CLAIMED_ID' => un +def, '_DATA' => { '_SESSION_ID' => undef, '_SESSION_ATIME' => undef, +'_SESSION_REMOTE_ADDR' => '127.0.0.1', '_SESSION_CTIME' => undef }, ' +_QUERY' => bless( { '.parameters' => [], 'use_tempfile' => 1, '.chars +et' => 'ISO-8859-1', '.cookies' => undef, '.fieldnames' => {}, 'param +' => {}, 'escape' => 1 }, 'CGI' ), '_DRIVER_ARGS' => {}, '_DSN' => { +'serializer' => 'default', 'id' => 'md5', 'driver' => 'file' } }, 'CG +I::Session' ); Content-Type: text/html; charset=ISO-8859-1
    code of index.pl
    my $cgi = CGI->new; print $cgi->header(); my $session = CGI::Session->load() or die CGI::Session->errstr; if ( $session->is_expired ) { print "Your session timed out! Refresh the screen to start new + session!"; exit(0); } elsif ( $session->is_empty ) { $session = $session->new() or die $session->errstr; print $session->header(); print $session->id(); $session->expire("5h"); print "<a href='called.pl'>call</a></br></br>"; print Dumper($session); $session->flush(); } else { print "session found"; print "<a href='called.pl'>call</a></br></br>"; }
    and code of called page
    my $cgi = CGI->new; print $cgi->header(); my $session = CGI::Session->load() or die CGI::Session->errstr; print Dumper($session); print "<a href='index.pl'>index</a></br></br>"; $session->flush();

    So, I have to test further, would soon post update on this

      But don't know why still, around 6 out of 10, scenarios fails completely in browser

      Well, the new code you posted you use  print $cgi->header(); but this will never prints a session cookie, CGI.pm doesn't know anything about CGI::Session, see Re: CGI::Session "cache" issue, use $session->header, otherwise there is no session . no cookie means no sessionid means no session -- it may exist on the server, but the browser doesn't know anything about it (doesn't exist)

      fails completely in browser and command line mode.

      how are you passing the sessionid on the commandline?

        THANK YOU VERY MUCH, FOR HELP, EXPLANATIONS, AND REFERENCES. It worked as expected.
        my $cgi = CGI->new; my $session = CGI::Session->load() or die CGI::Session->errstr; if ( $session->is_expired ) { print "Your session timed out! Refresh the screen to start new + session!"; exit(0); } elsif ( $session->is_empty ) { $session = CGI::Session->new () or die CGI::Session->errstr; $session->expire("2h"); print $session->header(); print "<a href='called.pl'>call</a></br></br>"; print Dumper($session); } else { print $session->header(); print "session found"; print "<a href='called.pl'>call</a></br></br>"; } $session->flush();
        and
        my $cgi = CGI->new; my $session = CGI::Session->load() or die CGI::Session->errstr; print $session->header(); print $session->dump(); print "<a href='index.pl'>index</a></br></br>"; $session->flush();

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (9)
As of 2014-12-22 05:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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





    Results (110 votes), past polls