Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem with session under cgi file.

0 views
Skip to first unread message

Dsa Dang

unread,
Feb 24, 2007, 2:04:31 PM2/24/07
to
When i set a value in session after changing page session doesn't
remember the value.
I have an example.
Page: http://darksky.pl/test/index.cgi
Source: http://darksky.pl/test/index.txt
Don't ask why I have to make it with cgi ;/

--
Posted via http://www.ruby-forum.com/.

ara.t....@noaa.gov

unread,
Feb 24, 2007, 2:14:18 PM2/24/07
to
On Sun, 25 Feb 2007, Dsa Dang wrote:

> When i set a value in session after changing page session doesn't
> remember the value.
> I have an example.
> Page: http://darksky.pl/test/index.cgi
> Source: http://darksky.pl/test/index.txt
> Don't ask why I have to make it with cgi ;/

you need to make sure you flush and close it.

-a
--
be kind whenever possible... it is always possible.
- the dalai lama

Dsa Dang

unread,
Feb 24, 2007, 2:35:14 PM2/24/07
to
> you need to make sure you flush and close it.

I've added sess.close at the end but it still doesn't work :/

ara.t....@noaa.gov

unread,
Feb 24, 2007, 3:06:26 PM2/24/07
to
On Sun, 25 Feb 2007, Dsa Dang wrote:

>> you need to make sure you flush and close it.
>
> I've added sess.close at the end but it still doesn't work :/
>


are you setting the expiration?

cgi = CGI.new

session = CGI::Session.new(cgi, "session_expires" => Time.at(2**31-1))
at_exit{ session.update; session.close }

ara.t....@noaa.gov

unread,
Feb 24, 2007, 4:17:52 PM2/24/07
to
On Sun, 25 Feb 2007, Jeremy Kemper wrote:

>> are you setting the expiration?
>>
>> cgi = CGI.new
>>
>> session = CGI::Session.new(cgi, "session_expires" => Time.at(2**31-1))
>> at_exit{ session.update; session.close }
>
>

> Good suggestions, but both should be unnecessary. CGI::Session uses a
> finalizer to ensure the session is closed and all the builtin session stores
> update on close. No expires means the cookie lives for the duration of the
> browser session.

yeah i know - i had issues with this just last week though - i'll try to
reproduce...

Dsa Dang

unread,
Feb 25, 2007, 10:16:03 AM2/25/07
to
So.. my friend have found what was wrong. It's all about session id.
Here it must be send manually. I'll leave the source here as it may be
deleted from the server soon (first old source, then correct and
working).

--------------
old:
#!/usr/bin/ruby

require 'cgi'
require 'cgi/session'
require 'cgi/session/pstore'

def mojaSesja(cgi)
return CGI::Session.new(cgi,
#'database_manager' => CGI::Session::PStore, # use PStore
'session_key' => 'rek_key', # custom session key
'session_expires' => Time.now + 30 * 60, # 30 minute timeout
'prefix' => 'rek_') # PStore option
end

cgi = CGI.new("html4")
sess = mojaSesja(cgi)

puts "Content-type: text/html\n\n"
puts "<a href='index.cgi?z=a'>a</a><br />"
puts "<a href='index.cgi?z=b'>b</a><br />"

if cgi['z'] == 'a'
sess['z'] = cgi['z']
sess.update
end

puts sess['z']

--------------
new (ok):

#!/usr/bin/ruby

require 'cgi'
require 'cgi/session'
require 'cgi/session/pstore'

def mojaSesja(cgi)
CGI::Session.new(cgi,
#'database_manager' => CGI::Session::PStore, # use PStore
'session_key' => 'session_id', # custom session key
'session_expires' => Time.now + 30 * 60, # 30 minute timeout
'prefix' => 'rek_') # PStore option
end

cgi = CGI.new("html4")
sess = mojaSesja(cgi)


puts "Content-type: text/html\n\n"
print "<a href='index.cgi?z=a&session_id=",sess.session_id,"'>a</a><br
/>"
print "<a href='index.cgi?z=b&session_id=",sess.session_id,"'>b</a><br
/>"


if cgi['z'] == 'a'
sess['z'] = cgi['z']
end

puts sess['z']

sess.close

0 new messages