jaldhar has asked for the wisdom of the Perl Monks concerning the following question:
This is myapp.pl:<Directory /www/htdocs/myapp> Options Indexes FollowSymLinks AllowOverride None PerlRequire "/www/HTML-Mason/myapp.pl" SetHandler perl-script PerlHandler HTML::Mason </Directory>
In my database (MySQL 3.22.32) I have a table defined like this:package HTML::Mason; use HTML::Mason; use strict; use Apache::DBI; my $dbsource = "dbi:mysql:myapp"; my $dbuser = 'myapp'; my $dbpass = 'mypass'; # Import some modules for use in components { package HTML::Mason::Commands; use vars qw(%session); use CGI::Cookie; use CGI::Carp; use Apache::DBI; use Apache::Session::MySQL; use Mail::Sendmail; } # Create a new Mason parser my $parser = new HTML::Mason::Parser; # Create a new Mason interpreter my $interp = new HTML::Mason::Interp (parser => $parser, comp_root => '/www/htdocs/carboncontacts/ +', data_dir => '/www/HTML-Mason/'); # Create a new Mason ApacheHandler my $ah = new HTML::Mason::ApacheHandler (interp => $interp); # Make sure that things are done as nobody, and not root! chown ( [getpwnam('www')]->[2], [getgrnam('www')]->[2], $interp->files_written ); # ----------------------------------------------------------- # Create our content handler. sub handler { # Get the Apache request object my $r = shift; # Only handle text return -1 if defined($r->content_type) && $r->content_type !~ m|^text/|io; # Get the incoming cookies my %cookies = parse CGI::Cookie($r->header_in('Cookie')); # Try to re-establish an existing session eval { tie %HTML::Mason::Commands::session, 'Apache::Session::MySQL', ($cookies{'AF_SID'} ? $cookies{'AF_SID'}->value() : undef), { DataSource => $dbsource, UserName => $dbuser, Password => $dbpass }; }; # If we could not re-establish an existing # session, create a new session. if ( $@ ) { if ( $@ =~ m#^Object does not exist in the data store# ) { tie %HTML::Mason::Commands::session, 'Apache::Session::MyS +QL', undef, { DataSource => $dbsource, UserName => $dbuser, Password => $dbpass }; undef $cookies{'AF_SID'}; } } if ( !$cookies{'AF_SID'} ) { my $cookie = new CGI::Cookie(-name => 'AF_SID', -value => $HTML::Mason::Commands::session{_session_i +d}, -path => '/myapp/'); $r->header_out('Set-Cookie', => $cookie); } my $status = $ah->handle_request($r); untie %HTML::Mason::Commands::session; return $status; } 1;
Now according to what I have read, this should be enough to give me a hash called %session to which I can read and write which would translate into setting and reading cookies. But like I said it doesn't work :(CREATE TABLE sessions ( id CHAR(32) NOT NULL PRIMARY KEY, a_session TEXT );
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
RE: How to use Apache::Session?
by steveAZ98 (Monk) on Aug 13, 2000 at 05:19 UTC | |
by jaldhar (Vicar) on Aug 18, 2000 at 19:31 UTC |