From: Steven D. A. <st...@ne...> - 2003-02-21 02:22:15
|
I may be having some serious misconceptions about how session works, but I wonder if anyone can point out the mistake(s) I'm making here. I've tried to reduce the problem to the minimum amount of code possible. Essentially, the problem is that I can't seem to get session functionality -- values simply aren't saved from page to page. To recreate the problem, I developed three small files -- a header and two pages, once of which loads the other. I set a session value in the first page, and it doesn't show up in the second. The header file looks like this: [[.import name=session args="'session_dir', '/home/thoth/httpd/session', auto=28800"]] [[\ def generate_cookie( length=30 ): import random chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' cookie = '' for i in range( length ): cookie += random.choice( chars ) return cookie sessionid = cookie.get( 'unr_session' ) if not sessionid: sessionid = generate_cookie() cookie.set( 'unr_session', sessionid ) session_dict = session.get( sessionid ) if not session_dict: session_dict = {} ]] This file fetches a dictionary stored under the sessionid. If there is no dictionary there, it creates one. The first page looks like this: [[.import name=include]] [[.include file=testheader.spy]] [[\ # Set a value in the session dict session_dict[ 'foo' ] = 'bar' session.set( session_dict, 3600, sessionid ) include.spyce( "test_page2.spy" ) return ]] Note this file sets the 'foo' key in the session_dict dictionary, then saves the dictionary under the sessionid, and finally includes the next page. The second page looks like this: [[.import name=include]] [[.include file=testheader.spy]] [[\ from sys import stderr as err print >>err, "session_dict[ 'foo' ] = ", session_dict[ 'foo' ] ]] When I load the first page, it executes its code and then loads the second page. The print statement in the second page above raises a KeyError because 'foo' is not a key in session_dict. On a little further debugging, I discovered that the cookie.set( 'unr_session', sessionid ) call doesn't seem to work -- the cookie.get function never seems to get the cookie back, it always looks like None. This is no doubt a central aspect of the problem. Does anyone know what's going on here? What am I missing? steve -- |