CGI::Session::Driver::DBI - Base class for native DBI-related CGI::Session drivers
require CGI::Session::Driver::DBI; @ISA = qw( CGI::Session::Driver::DBI );
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!
CGI::Session::Driver::DBI defines init() method, which makes DBI handle available for drivers in 'Handle' 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.
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 :
\%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'});
Following driver arguments are supported:
First argument to be passed to DBI->connect().
User privileged to connect to the database defined in DataSource.
Password of the User privileged to connect to the database defined in DataSource
To set existing database handle object ($dbh) returned by DBI->connect(). Handle will override all the above arguments, if any present.
Name of the table session data will be stored in.
For support and licensing information see CGI::Session
To install CGI::Session, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Session
CPAN shell
perl -MCPAN -e shell install CGI::Session
For more information on module installation, please visit the detailed CPAN module installation guide.