Problem with session under cgi file.

D

Dsa Dang

you need to make sure you flush and close it.

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

ara.t.howard

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 }

-a
 
A

ara.t.howard

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...

-a
 
D

Dsa Dang

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,234
Messages
2,571,180
Members
47,813
Latest member
RustyGary3

Latest Threads

Top