perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan <jvana...@2xlp.com>
Subject Re: Apache2::Cookies - getting all names
Date Mon, 26 Dec 2005 19:19:29 GMT

This is what I do:

	my $cookiejar 	= Apache2::Cookie::Jar->new( $this->{'ApacheRequest'} );
	my @names 		= $cookiejar->cookies();
	DEBUG_COOKIE >0 &&  print STDERR "-| Found These Cookies : " . (join  
" , ",@names) . "\n";
	if ( $cookiejar->cookies( $this->{'CookieDefaults'}->{'names'}-> 
{'Session'} ) )
	{
		DEBUG_COOKIE >0 && print STDERR "-|  Handling cookie: {$this-> 
{'CookieDefaults'}->{'names'}->{'Session'}} \n";
		DEBUG_COOKIE >0 && print STDERR "-|    >> Validating... \n";
		my 	%c_cookies = Apache2::Cookie->fetch( $this->{'ApacheRequest'} );
		my 	$c_value = $c_cookies{ $this->{'CookieDefaults'}->{'names'}-> 
{'Session'} }->value;
		DEBUG_COOKIE >0 && print STDERR "-|       \%c_cookies => \{\} ; \ 
$c_cookies\{{$this->{'CookieDefaults'}->{'names'}->{'Session'}}\}- 
 >value = '", $c_value , "'\n";
		DEBUG_COOKIE >0 && print STDERR "-|       Validating c_value  
$c_value \n";
	}	



you've got
	my @vals = $cookie->value();

as far as i know, cookies only have a single scalar value. you'll  
need to serialize/deserialize any other data structure into it.

cookiedefaults are something that i set in a sitewide configuration  
file:

my $CookieDefaults = 	{
				domain 			=> 	
				[
					'127.0.0.1',
					'dev.2xlp.com',
				],
				path 			=> '/',
				expires 		=> '+365d',
				secure 			=> 0,
				names 			=>
				{
					'Session' => 'my_session',
					'AutoLogin' => 'my_autologin',
				}
			};


and i have a session wrapper class that sets/reads cookies for all  
domains in the cookie defaults configuration, for the Session cookie  
( named names[Session] ) or AutoLogin cookie ( names[AutoLogin] )

that setup is very manageable for me



On Dec 26, 2005, at 1:32 PM, Jeff wrote:

> Folks,
>
> I am finding it hard to correctly interpret the Apache2::Cookie  
> documentation: The docs say:
>   @names = $j->cookies();        # all cookie names
>
> When I do this, for the following cookies:
>   c1 => 'v1',
>   c2 => 'v2',
>
> I expect @names to contain ( "c1", "c2" ), but instead
> @names contains ( "c1", "c1=v1", "c2", "c2=v2" )
>
> The following code has the above problem:
>
> my $jar     =  Apache2::Cookie::Jar->new( $r );
> my @names   = $jar->cookies;
> for my $name ( @names ) {
>   my $cookie = $jar->cookies( $name );
>   my @vals = $cookie->value();
>   print "cookie: $name values: @vals\n";
> }
>
>
> Instead, I have ended up with:
>
> my $jar     =  Apache2::Cookie::Jar->new( $r )->cookies;
> my @cookies = values %$jar;
> for my $cookie ( @cookies ) {
>   my $token = $cookie->name();
>   my @vals = $cookie->value();
>   print "cookie: $token value: @vals\n";
> }
>
>
> Is there a better way? I couldn't get this to work:
>
> my @cookies = values /
>   %{ scalar Apache2::Cookie::Jar->new( $r )->cookies };
>
> - seems that the Jar class is trying much to hard to be clever? Or  
> maybe I'm just being dumb?
>
> Thoughts appreciated,
>
> Jeff
>
>
>
>


Mime
View raw message