The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

CGI::Builder::SessionManager - CGI::Builder / Apache::SessionManager integration

SYNOPSIS

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'};
}

DESCRIPTION

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.

INSTALLATION

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

PROPERTIES

This module adds sm property to the standard CBF properties.

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'};   

METHODS

sm_destroy

Destroy the current session object.

$cbf->sm_destroy;

EXAMPLES

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:

#!/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 .

BUGS

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

Version 1.00

SEE ALSO

Apache::SessionManager, CGI::Builder

AUTHOR

Enrico Sorcinelli, <enrico at sorcinelli.it>

COPYRIGHT AND LICENSE

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.