
![]() | ![]() |
21.3. Accessing Cookie Values
21.3.1. Problem
You want to examine values client
sent you in a cookie.
21.3.2. Solution
Use the CPAN module Apache::Cookie to populate a hash of cookie
objects derived from the header sent by the
client.use Apache::Cookie;
$ac = Apache::Cookie->new($r);
%all_cookies = $ac->parse( );
Now each element of that hash is an object representing a single
cookie:$one_cookie = $all_cookies{COOKIE_NAME};
Interrogate the object to learn about that cookie's values:$one_cookie->value( ) $one_cookie->name( )
$one_cookie->domain( ) $one_cookie->path( )
$one_cookie->expires( ) $one_cookie->secure( )
21.3.3. Discussion
To test whether a cookie was sent by the browser, use
exists on the hash element:unless (exists $all_cookies{chocolate}) {
$r->header_out(Location => "http://www.site.com/login");
return REDIRECT;
}
Don't simply test for truth:unless ($all_cookies{chocolate}) { # BAD
Valid cookie values include the empty string and 0, both false to
Perl. See the Introduction to Chapter 1 for more.The CGI::Cookie module is a pure Perl
substitute for Apache::Cookie. Its strategy for getting a hash of
cookies is slightly different from that of Apache::Cookies:use CGI::Cookie;
%all_cookies = CGI::Cookie->fetch;
This hash of cookies works the same as the one by Apache::Cookie.
21.3.4. See Also
Writing Apache Modules with Perl and C; Recipe 20.14; Recipe 3.7 in mod_perl
Developer's Cookbook; the Apache.pm manpage;
documentation for the CGI::Cookie and Apache::Cookie modules from
CPAN
![]() | ![]() | ![]() |
21.2. Setting Cookies | ![]() | 21.4. Redirecting the Browser |

Copyright © 2003 O'Reilly & Associates. All rights reserved.