I get along just fine without CGIS. Its up to the app to put the session id into any html if that's desired to work around cookieless browsers.
package Camp;
use strict;
use warnings;
use base qw/CGI::Application/;
use CGI::Session;
use DBI;
##############################
##### OVERRIDE METHODS #####
##############################
sub setup {
my $self = shift;
my $q = $self->query;
my $dbh = DBI->connect($self->param('DBH_DSN'),
$self->param('DBH_USER'),
$self->param('DBH_PASS'),
$self->param('DBH_OPT'));
$self->param( dbh => $dbh );
my $session = CGI::Session->new
( "driver:PostgreSQL",
$q,
{ Handle => $dbh } );
my $session_id = $session->id;
$self->param( session => $session );
$self->param( session_id => $session_id );
return;
}
sub cgiapp_prerun {
my $self = shift;
my $session = $self->param('session');
my $session_id = $session->id;
# Save the session cookie
$self->header_props
( -cookie => CGI::Cookie->new( -name => 'CGISESSID',
-value => $session_id ) );
return;
}
sub teardown {
my $self = shift;
$self->param('session')->flush;
$self->param('dbh')->disconnect;
return;
}
|