CGI::Builder::SessionManager - CGI::Builder / Apache::SessionManager integration
package WebApp; use CGI::Builder qw/ CGI::Builder::SessionManager /; sub PH_session { my $cbf = shift; $cbf->page_content = 'Session test page!'; $cbf->sm->{'foo'} = 'baz'; $cbf->page_content .= $cbf->sm->{'foo'}; }
CGI::Builder::SessionManager is a CGI::Builder extension that integrates Apache::SessionManager session management into CGI::Builder framework (CBF).
Apache::SessionManager is a mod_perl (1.0 and 2.0) module that helps session management of a web application. This module is a wrapper around Apache::Session persistence framework for session data. It creates a session object and makes it available to all other handlers transparenlty. See 'perldoc Apache::SessionManager' for module documentation and use.
In order to install and use this package you will need Perl version 5.005 or better.
Prerequisites:
CGI::Builder >= 1.2
Apache::SessionManager >= 1.01
Installation as usual:
% perl Makefile.PL % make % make test % su Password: ******* % make install
This module adds sm property to the standard CBF properties.
sm
It's possible to set a value in current session with:
$cbf->sm->{'foo'} = 'baz';
and it's possible to read value session with:
print $cbf->sm->{'foo'};
Destroy the current session object.
$cbf->sm_destroy;
This is a simple CGI::Builder application, (save it, for example, as /some/path/cgi-builder/WebApp.pm):
package WebApp; # your class name use CGI::Builder qw/ CGI::Builder::SessionManager /; use Data::Dumper; sub PH_AUTOLOAD { # always called for all requested pages my $cbf = shift; $cbf->page_content = "Default content"; # defines the page content } sub PH_session { my $cbf = shift; $cbf->page_content = "Session test!<BR>\n"; $cbf->sm->{"$$-" . rand()} = rand; $cbf->page_content .= '<PRE>' . Dumper($s->cbf) . '</PRE>'; } sub PH_delete_session { my $cbf = shift; $cbf->page_content = "Session test! (deletion)"; $cbf->sm_destroy; }
and the correspondent configuration lines in httpd.conf:
<IfModule mod_perl.c> PerlModule Apache::SessionManager PerlTransHandler Apache::SessionManager Alias /cgi-builder "/usr/local/apache/cgi-builder" <Location /cgi-builder> SetHandler perl-script PerlHandler Apache::Registry PerlSendHeader On PerlSetupEnv On Options +ExecCGI PerlSetVar SessionManagerTracking On PerlSetVar SessionManagerExpire 1800 PerlSetVar SessionManagerInactivity 900 PerlSetVar SessionManagerName CBFSESSIONID PerlSetVar SessionManagerStore File PerlSetVar SessionManagerStoreArgs "Directory => /tmp/apache_session_data/cbf" PerlSetVar SessionManagerDebug 1 </Location> </IfModule>
In order to test this simple application you must implement the Instance Script that is what is actually called by your web server.
It is a very small, simple file which simply creates an instance of your application and calls an inherited method, process(). Following is the entirely of /some/path/cgi-builder/webapp.cgi:
process()
#!/usr/local/bin/perl -w use WebApp; my $webapp = new WebApp; $webapp->process();
Restart the httpd server and launch http://localhost/cgi-builder/webapp.cgi .
Please submit bugs to CPAN RT system at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CGI-Builder-SessionManager or by email at bug-cgi-builder-sessionmanager@rt.cpan.org
Patches are welcome and I'll update the module if any problems will be found.
Version 1.00
Apache::SessionManager, CGI::Builder
Enrico Sorcinelli, <enrico at sorcinelli.it>
Copyright (C) 2004 by Enrico Sorcinelli
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available.
To install CGI::Builder::SessionManager, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Builder::SessionManager
CPAN shell
perl -MCPAN -e shell install CGI::Builder::SessionManager
For more information on module installation, please visit the detailed CPAN module installation guide.