Re: [Cgi-session-user] CGI::Sesion works incorrectly
Brought to you by:
sherzodr
From: Mark S. <ma...@su...> - 2006-07-23 12:49:50
|
Sergey Brutsky wrote: > I've changed my code in agree to your code, it doesn't work. > > I think that problem, probably, in initializing session instance. > It initializes in two steps: creating session instance and then > reinitializing session (reading CGISESSID and creating session file). > It seems that my getInstance() method returns "half-initialized" session > object. > I mean to use condition "defined $session" is not enough. > getInstance() should initialize sesssion, reinitialize and only after > that returns instance. Sergey, It's frustrating that you haven't followed up on the advice given to you of writing some tests. Here are some tests I wrote for the case. Do they pass for you when you run these tests in a file? If they do, your problem is elsewhere, or you need to write a new test to share with us that illustrates your problem. If the tests don't pass, check that you are using the latest version of CGI::Session. Finally, consider using CGI::Application and CGI::Application::Plugin::Session instead! They are a lightweight, proven solution to provide a singleton for a CGI::Session object. Mark -- http://mark.stosberg.com/ #!/usr/bin/perl package SessionSingleton; my $session; sub getInstance { defined $session or $session = CGI::Session->new(); return $session; } use Test::More 'no_plan'; use CGI::Session; my $session1; is($session1,undef, "session starts out undef"); $session1 = SessionSingleton->getInstance; ok($session1, "session is true after getInstance"); my $sid = $session->id; $session2 = SessionSingleton->getInstance; is($sid,$session2->id, "multiple call to getInstance return the same session ID"); |