Problem with sessions.

Discussion in 'Perl' started by vitali, Jul 26, 2008.

  1. vitali

    vitali New Member

    Joined:
    Jul 26, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Hello.

    I trying to create a login script, but i keep having weird problem with sessions.

    Here is the chunk of code from login.pm, that creates session variables and redirects to the next page if login is valid:
    Code:
    #!/usr/bin/perl -wT
    
    use CGI qw/:standard/;
    use strict;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use DBI;
    use CGI::Session;
    
    
    my $cgi = new CGI;
    my $session = new CGI::Session(undef,$cgi,{Directory=>'/tmp'});
    my $cookie = $cgi->cookie(CGISESSID => $session->id);
    
    my $id;
    my $login;
    my ($status, $full_name) = &login;
    
    #------------------------------------------------------------------
    #------------------------------------------------------------------
    if (param('sign_in')){
    	if ($status eq "allow"){
    		$session->param('user_name', $full_name);
    		$session->param('user_status', $status);
    		print redirect('./order_list.dhtml');
    		#print header;
    		#print "You have loged in.",br;
    		#my $user_status = $session->param("user_status");
    		#print $full_name,br,$user_status;
    	} else {
    		print $cgi->header(-cookie=>$cookie);
    		print start_html;
    		print "Login Failed",br;
    		&login_form;
    		print end_html;
    	}
    } else {
    	print $cgi->header(-coockie=>$cookie);
    	print start_html;
    	&login_form;
    	print end_html;
    }
    
    For some odd reason it will only let me through if I'll fail login once.

    Here is the chunk of code from the page that I'm suppose to get redirected to:
    Code:
    #!/usr/bin/perl -wT
    
    use CGI qw(:standard);
    use strict;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use DBI;
    use CGI::Session ('-ip_match');
    
    my $cgi = new CGI;
    #my $session = new CGI::Session(undef,$cgi,{Directory=>'/tmp'});
    my $session = CGI::Session->load();
    my $user_status = $session->param("user_status");
    my $user_name = $session->param("user_name");
    
    
    if ($user_status eq "allow"){
    print $cgi->header(-cookie=>cookie);
    print start_html("Order list");
    print $user_status;
    print $user_name;
    print end_html;
    } else {
    print redirect('./login.dhtml');
    }
    
    Any thoughts?
     
  2. pradeep

    pradeep Team Leader

    Joined:
    Apr 4, 2005
    Messages:
    1,645
    Likes Received:
    87
    Trophy Points:
    0
    Occupation:
    Programmer
    Location:
    Kolkata, India
    Home Page:
    http://blog.pradeep.net.in

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice