CGI::Session::Driver::User3Contributed Perl DocumeCGI::Session::Driver::DBI(3)NAMECGI::Session::Driver::DBI - Base class for native DBI-related
CGI::Session drivers
SYNOPSIS
require CGI::Session::Driver::DBI;
@ISA = qw( CGI::Session::Driver::DBI );
DESCRIPTION
In most cases you can create a new DBI-driven CGI::Session driver by
simply creating an empty driver file that inherits from
CGI::Session::Driver::DBI. That's exactly what sqlite does. The only
reason why this class doesn't suit for a valid driver is its name isn't
in lowercase. I'm serious!
NOTES
CGI::Session::Driver::DBI defines init() method, which makes DBI handle
available for drivers in Handle - object attribute regardless of what
"\%dsn_args" were used in creating session object. Should your driver
require non-standard initialization you have to re-define init() method
in your .pm file, but make sure to set 'Handle' - object attribute to
database handle (returned by DBI->connect(...)) if you wish to inherit
any of the methods from CGI::Session::Driver::DBI.
STORAGE
Before you can use any DBI-based session drivers you need to make sure
compatible database table is created for CGI::Session to work with.
Following command will produce minimal requirements in most SQL
databases:
CREATE TABLE sessions (
id CHAR(32) NOT NULL PRIMARY KEY,
a_session TEXT NOT NULL
);
Your session table can define additional columns, but the above two are
required. Name of the session table is expected to be sessions by
default. You may use a different name if you wish. To do this you have
to pass TableName as part of your " \%dsn_args ":
$s = new CGI::Session('driver:sqlite', undef, {TableName=>'my_sessions'});
$s = new CGI::Session('driver:mysql', undef,
{
TableName=>'my_sessions',
DataSource=>'dbi:mysql:shopping_cart'.
});
To use different column names, change the 'create table' statement, and
then simply do this:
$s = new CGI::Session('driver:pg', undef,
{
TableName=>'session',
IdColName=>'my_id',
DataColName=>'my_data',
DataSource=>'dbi:pg:dbname=project',
});
or
$s = new CGI::Session('driver:pg', undef,
{
TableName=>'session',
IdColName=>'my_id',
DataColName=>'my_data',
Handle=>$dbh,
});
DRIVER ARGUMENTS
Following driver arguments are supported:
DataSource
First argument to be passed to DBI->connect(). If the driver makes
the database connection itself, it will also explicitly disconnect
from the database when the driver object is DESTROYed.
User
User privileged to connect to the database defined in "DataSource".
Password
Password of the User privileged to connect to the database defined
in "DataSource"
Handle
An existing DBI database handle object. The handle can be created
on demand by providing a code reference as a argument, such as
"<sub{DBI-"connect}>>. This way, the database connection is only
created if it actually needed. This can be useful when combined
with a framework plugin like CGI::Application::Plugin::Session,
which creates a CGI::Session object on demand as well.
"Handle" will override all the above arguments, if any present.
TableName
Name of the table session data will be stored in.
LICENSING
For support and licensing information see CGI::Session
perl v5.14.2 2008-07-16 CGI::Session::Driver::DBI(3)