Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^4: cookie problem

by fishmonger (Chaplain)
on Nov 12, 2014 at 17:00 UTC ( [id://1106996]=note: print w/replies, xml ) Need Help??


in reply to Re^3: cookie problem
in thread cookie problem

There are 2 things to be aware of when using print $q->redirect(-uri=>"home.pl", -cookie=>$cookie); as pointed out in the CGI documentation under Generating_a_redirection_header.

1) You should always use full URLs (including the http: or ftp: part) in redirection requests. Relative URLs will not work correctly.
2) All names arguments recognized by header() are also recognized by redirect(). However, most HTTP headers, including those generated by -cookie and -target, are ignored by the browser.

I take from those 2 comments that the results could be unpredictable.

Replies are listed 'Best First'.
Re^5: cookie problem
by bigup401 (Pilgrim) on Nov 12, 2014 at 18:51 UTC

    this is the full script

    HOME.PL use DBI; use CGI; use strict; my $cgi = CGI->new(); my $db ="databa"; my $usr ="root"; my $pwd =""; my $host ="localhost"; my $dbh = DBI->connect("DBI:mysql:$db:$host", $usr, $pwd { AutoCommit => 0, RaiseError => 1, } ) or die $DBI::errstr; my $username = $cgi->param('username'); my $password = $cgi->param('password'); my $sth = $dbh->prepare("select id from mysql_auth where username=? AN +D password=?"); $sth->execute($username,$password) if(my $x = $sth->fetchrow()); { $sth->finish(); my $cookie = $cgi->cookie( -name => 'login', -value => $username, -expires => '+2m', -path => '/'); print $cgi->redirect(-url=>"welcome.pl", -cookie=>$cookie); } else { print"wrong password\n"; } WELCOME.PL use DBI; use CGI; use strict; my $cgi = CGI->new(); $sid = $cgi->param('login'); if ( ! $sid ){ # exit and return to home.pl! we have no cookies print $cgi->redirect(-uri=>"home.pl", -cookie=>$cookie); } else { #start using the page! we have cookies print $cgi->header(-cookie=>$cookie); }

      I see several issues, but the key one is this one in wel.pl
      $sid = $cgi->param('login');

      You don't retrieve cookie data via the param() method, you retrieve it using the cookie() method.
      my $sid = $cgi->cookie('login');

        i tried it as u said bt still redirect me back
      If you show your complete scripts we can probably help you.
      poj

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-25 19:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found