On Thu, 30 Mar 2000 [EMAIL PROTECTED] wrote:
> Hi,
>
> I'm trying to use Apache::Session::DBI. I got the hang of it and
> started using it but I get the following error:
>
> [Thu Mar 30 04:41:41 2000] [error] Can't call method "store" on
> unblessed reference at lib/web/webmaster.p
> l line 54.
>
> Now, lines 49-54 on lib/web/webmaster.pl look like this (I added line
> numbers):
>
> 49 sub carry_on {
> 50 my $htdocs_dir = $SETUP::htdocs_dir;
> 51 my $p = $$query->param('p'); #which page user selected
> 52 my $do = $$query->param('do'); #which page user selected
> 53 $session->{'already_reged'} = 1; #so user can't submit this form
> ever again!
> 54 $session->store();
> ...
> }
Looks like you are using an ancient version of Apache::Session. I
recommend upgrading to 1.0x. Even I don't remember how to use the old
0.1x version.
-jwb
>
> Alot of other stuff come after this but it doesn't really matter :)
>
> Anyway, there's another routine, called main, that creates a session
> and then calls carry_on. Here's the routine with the two lines that
> come before it:
>
> package WEBMASTER;
> use strict;
> sub main {
> use vars qw($query $sid $session %session); #making these variables
> global
> local $query = \$MAIN::query;
>
> local ($sid,$session,%session); #session stuff
> my ($rc,$adv); #recommender, advertiser
>
> if (!$$query->param('sid'))
> {
> #make a fresh session for a first-time visitor
> my $opts = { 'subclass-specific' => 'option overrides', 'autocommit'
> => '0', 'lifetime' => $SETUP::default_session_timeout};
> $session = Apache::Session::DBI->new($opts);
> tie %session, 'Apache::Session::DBI', undef;
>
> #define variables
> $sid = $session->{'_ID'};
> $rc = $$query->param('rc'); #recommender
> $adv = $$query->param('adv'); #advertiser
> #add to object
> $session->{'rc'} = $$query->param('rc');
> $session->{'adv'} = $$query->param('adv');
> $session->store();
> }
> else
> {
> #get the session data for a returned visitor
> $sid = $$query->param('sid');
> $session = Apache::Session::DBI->open($sid);
> tie %session, 'Apache::Session::DBI', $sid;
> #checking if session has timed-out
> $rc = $session->{'rc'}; #recommender
> $adv = $session->{'adv'}; #advertiser
> }
> &carry_on();
> }
>
> Well, this is about all of it. :)
>
> If I take off those two lines everything is working fine and the
> sessions is added to the database.
>
> Here's the complete error message from the error_log:
>
> Session manager opening persistent connection at
> /usr/local/lib/site_perl/Apache/Session/DBI.pm line 40.
> Apache::Session::DBI::init_connection() called at
> /usr/local/lib/site_perl/Apache/Session/DBI.pm l
> ine 206
> Apache::Session::DBI::fetch('Apache::Session::DBI',
> '351d62cfe6f5895f') called at /usr/local/lib/s
> ite_perl/Apache/Session.pm line 61
> Apache::Session::open('Apache::Session::DBI',
> '351d62cfe6f5895f') called at lib/web/webmaster.pl l
> ine 40
> WEBMASTER::main called at (eval 34) line 88
> Apache::ROOT::index_2epl::handler('Apache=SCALAR(0x82c6c78)')
> called at /usr/local/lib/site_perl/A
> pache/Registry.pm line 135
> eval {...} called at
> /usr/local/lib/site_perl/Apache/Registry.pm line 135
> Apache::Registry::handler('Apache=SCALAR(0x82c6c78)') called
> at lib/web/printing.pl line 0
> eval {...} called at lib/web/printing.pl line 0
> [Thu Mar 30 04:41:41 2000] [error] Can't call method "store" on
> unblessed reference at lib/web/webmaster.p
> l line 54.
>
>