Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks!
I am trying to have a simple way to expire a user section using the code here, but I am missing something, I am getting this error
Software error: Can't call method "value" on an undefined value...

could someone show my the best way to do this. I want to set the cookie to be the current time, and then have the section to expire in 15 min and redirect to my login page, here is the code I am using for this.

#!/usr/bin/perl use strict; use warnings; use CGI qw(:cgi-lib); use Date::Calc qw(:all); use CGI::Carp qw(fatalsToBrowser); use CGI qw/:standard/; use DBI; use CGI::Cookie; $current_time = time(); my $ck1 = new CGI::Cookie( "-name" => "time","-value" => "$current_ti +me" ); print "Set-Cookie: $ck1\n"; print "Content-Type: text/html\n\n"; my %cookies = fetch CGI::Cookie; $cookie_time = $cookies{time}->value; if ($current_time - $cookie_time > 160) { print "Location: ../login_index.html\n\n\n"; exit; } # print cookie(s) before redirecting, for testing only foreach (keys %cookies) { print cookies here.... }

Thanks!

Replies are listed 'Best First'.
Re: Expiring Cookies
by olus (Curate) on Mar 14, 2008 at 18:25 UTC

    You can achieve that with expires.

    my $ck1 = new CGI::Cookie( -name => "time", -value => "some value", -expires => '+15m', );

    update: Whenever you try to read the cookie and it is not present, then redirect to the login page.