sub Restore_Session { my $class = shift; my $cgi = shift || die "No CGI handle..."; my $cookie = $cgi->cookie( $SESSION_COOKIE_NAME ); warn ( $cookie ) ? "### got session cookie '$cookie'" : "### no session cookie" ; tie %Session, 'Apache::Session::MySQL', $cookie, { 'DataSource' => "dbi:mysql:$DB_NAME;host=$HOSTNAME;port=$HOSTPORT", 'UserName' => $DB_USERNAME, 'Password' => $PASSWORD, 'LockDataSource' => "dbi:mysql:$DB_NAME;host=$HOSTNAME;port=$HOSTPORT", 'LockUserName' => $DB_USERNAME, 'LockPassword' => $PASSWORD, } ; warn "### session id is '$Session{_session_id}'"; $Session{'some crap'} = 'some value crap'; warn "### current session parameters:" . (( %Session > 0 ) ? (join "\t", '', map {"'$_' => '$Session{$_}'"} keys %Session) : " none... starting new session\n") ; return (%Session > 0); } sub Save_Session { my $class = shift; my $cgi = shift || $CGI || die "No CGI handle..."; $Session{'time_now'} = localtime(); warn "### current session parameters:" . (( %Session > 0 ) ? (join "\t", '', map {"'$_' => '$Session{$_}'"} keys %Session) : "none... saving empty session!!!\n") ; my $session_id = $Session{_session_id}; warn "### session id is '$session_id'"; return $cgi->cookie( -name => $SESSION_COOKIE, -value => $session_id, -expires => '+1h', -path => '/', ); }