This has not been my experience Merlyn - Well, from the point of view of detecting cookies within server-side includes.
I have a web site under construction that makes use of a cookie-based session system via by server side includes. For example, the index.shtml file calls a 'links' sidebar where authenticated users can set their own personal bookmark links, much like the personal nodelet on this site, whereas non-authenticated users are displayed a login form.
The index.shtml server-side include looks like this:
<!--#include virtual="/cgi-bin/links.cgi" -->
Where the corresponding display_links dispatch subroutine of the links.cgi code, which uses CGI::Application, looks similar to this (cut a little for brevity):
sub display_links {
my $self = shift;
my $cgi = $self->query;
my $xml = $self->param('xml');
my %auth = $cgi->cookie(
-name => 'cowsnet-auth',
-path => '/'
);
my $html;
if (scalar keys %auth) {
my $prefs = eval {
my @user = grep { $_->{'username'} eq $auth{'username'} }
+@{%{$xml}->{'user'}};
return shift @user;
};
$html = $self->load_tmpl("authenticated.tmpl");
if (exists $prefs->{'links'}) {
my @links;
push (@links, {
'href' => eval {
my $uri = URI->new($_->{'href'});
$uri->canonical->as_string;
}
}) foreach @{$prefs->{'links'}};
$html->param(
'links' => \@links
);
}
} else {
$html = $self->load_tmpl("default.tmpl");
}
return $html->output;
}
This works like a charm - In order to set cookies with this system however I do still resort to calling a CGI directly which redirects through to 'authentication' page.
perl -e 's&&rob@cowsnet.com.au&&&split/[@.]/&&s&.com.&_&&&print' 20060730 Unconsidered by Corion: Consideration impossible. Was considered by jdporter: reparent to its proper parent, Answer: Cookies and Exec Cgi. Not sure how it ended up in the wrong place... |