in reply to Re: 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

Thanks for being with me. Am i correct that you are saying, all above code worked fine at your system? How come I am getting two different results. 1. IE9 and Firefox showed started session id, but when clicked on check.cgi IE showed different session id, and Firefox showed none. 2. Both browsers returned, session->is_empty as true. when check.cgi ran. Could you please, share your compiled code, which shows results written on webpage. About debugging, I went through links mentioned on above post. Brian d foy's comments were useful. But I am confused because when I run scripts from command line mode, it doesn't shows any errors. (returns syntax ok) I am trying to retreive session info from cookie and param but no luck yet.
  • Comment on Re^2: ie with cgi::session not showing same session id which it was set and firefox doesn't show at all
  • Download Code

Replies are listed 'Best First'.
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

    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

      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?