donnie jones
donniejones18 at gmail.com
Sun Feb 27 22:21:02 EST 2005
Well, GetMailboxes is the real function, but UseSession is the test function... It actually seems that the sid I am returning from my GetSid function isn't the actual sid that is in the Cookie, so each time the function is called and I pass my sid, it must think it is a new request and create a new session, that's the best I can figure... So, now I am trying to figure out why I am not getting the correct session id the same as what is in the Cookie. __ Donnie On Sun, 27 Feb 2005 21:58:01 -0500, Chris Jackson <christopher.jackson at gmail.com> wrote: > [comments inline] > > On Sun, 27 Feb 2005 21:39:25 -0500, donnie jones > <donniejones18 at gmail.com> wrote: > > Here is the code that calls the UseSession function, > > and it passes the sid that was from the GetSid function > > through the javascript. > > > > xmlhttp=new XMLHttpRequest(); > > > > if(xmlhttp2) { > > url = "mail.py/GetMailboxes?sid=" + sid; > > xmlhttp2.open("GET", url, true); > > } > > > > hmm, i still don't see the UseSession function. Although I do notice > GetMailboxes:) > > > I have a sneaking suspicion that each req is > > overriding my sess = Session(req, sid) with a new session id > > and it may be because the XMLHttpRequest doesn't pass > > the cookie that is generated for the session to the page, > > and insteach with each calls it thinks a new session should > > be created. > > > > I guess new connections via XMLHttpRequest could be happening, > preventing cookies from being persistent as expected. I'm not too familiar with > XMLHttpRequest, although your req.write works and displays the correct sid, > so the cookie must be reaching the page. > > And once you have the sid, your good to go, because when using sessions, > data is stored on the server, and the cookie just holds the sid. you can read > your /tmp/mp_sess* files and watch new session ids being created. > > > I'm working on trying to figure more out... > > __ > > Donnie > > > > ~= Chris =~ > > > On Sun, 27 Feb 2005 21:29:57 -0500, Chris Jackson > > <christopher.jackson at gmail.com> wrote: > > > Can you paste the line of code where you call UseSession, passing it the sid. > > > > > > ~= Chris =~ > > > > > > On Sun, 27 Feb 2005 14:43:38 -0500, donnie jones > > > <donniejones18 at gmail.com> wrote: > > > > The javascript uses XMLHttpRequest and from the responseText is > > > > able to get the SID and pass it to the UseSession function. > > > > > > > > I write out the session id in the UseSession function to make sure > > > > that the same session id is being passed, and it works. > > > > However, when I pass that same session id to the Session(req, sid) > > > > it creates another session... > > > > > > > > __ > > > > Donnie > > > > > > > > On Sun, 27 Feb 2005 13:47:31 -0500, Chris Jackson > > > > <christopher.jackson at gmail.com> wrote: > > > > > To add to this: > > > > > > > > > > When UseSession, for example, is called, the parameters (req, sessid) > > > > > get populated via the publisher handler with the values from the > > > > > <form>. So, since sessid is part of the form (<input type="hidden" > > > > > name="sessid"....>), then sessid now get's passed this hidden value > > > > > which came from the GetSID function. Or I could simply grab it by > > > > > saying req.form['sessid']. > > > > > > > > > > ~= Chris =~ > > > > > > > > > > On Sun, 27 Feb 2005 13:43:38 -0500, Chris Jackson > > > > > <christopher.jackson at gmail.com> wrote: > > > > > > So how is the session id getting form GetSID to UseSession? > > > > > > In other words, how does the sessid go from: > > > > > > > > > > > > GetSID => javascript => UseSession > > > > > > > > > > > > req.write simply sends the output to the browser. Does your > > > > > > javascript somehow pick it up? The default parameter of UseSession is > > > > > > (req, sid="") <-blanks. What sets this parameter? UseSession is a > > > > > > handler....not just some regular function. > > > > > > > > > > > > The way I do it: > > > > > > > > > > > > GetSID (...sessid = sess.id()....) # new session => > > > > > > t = psp.PSP(filename = 'blah.psp') # load psp template => > > > > > > t.run(vars={'sessid':sessid, ...}) # pass vars dictionary to template > > > > > > to fill in <%= %> holes => > > > > > > blah.psp (<html>.......... <input type="hidden" name="sessid" > > > > > > value="<%=sessid%>">......</html>) > > > > > > > > > > > > ~= Chris =~ > > > > > > > > > > > > On Sat, 26 Feb 2005 17:33:51 -0500, donnie jones > > > > > > <donniejones18 at gmail.com> wrote: > > > > > > > I am not understanding part of your explanation. > > > > > > > When I do the req.write of the sid, I can then pass it to the UseSession > > > > > > > function, and that UseSession now gets the correct session id. > > > > > > > I req.write the session id in the UseSession function and it is the > > > > > > > same as the session id from the GetSID function.... > > > > > > > > > > > > > > Are you saying that the session itself is lost without saving the sesion > > > > > > > id in the <input hidden> ? I am confused why passing the session id > > > > > > > to the Session(req, sid) shouldn't keep the same session... > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > __ > > > > > > > Donnie > > > > > > > > > > > > > > > > > > > > > On Fri, 25 Feb 2005 16:31:43 -0500, Chris Jackson > > > > > > > <christopher.jackson at gmail.com> wrote: > > > > > > > > This is not quite the same as in the example in the URL. > > > > > > > > > > > > > > > > The example in the URL passes the sessid to an <input hidden...> field > > > > > > > > via PSP templates. And when a function like (def UseSession) is > > > > > > > > called, req.form['sessid'] stores the value from this hidden field. > > > > > > > > That's how the sessid is passed. > > > > > > > > > > > > > > > > In your GetSid function, you simply say req.write, which doesn't > > > > > > > > really do anything but display it, vs. <input hidden...> which > > > > > > > > captures the sessid to be used later. After GetSid ends, your session > > > > > > > > id is lost. > > > > > > > > > > > > > > > > ~= Chris =~ > > > > > > > > > > > > > > > > > > > > > > > > On Fri, 25 Feb 2005 14:53:28 -0500, donnie jones > > > > > > > > <donniejones18 at gmail.com> wrote: > > > > > > > > > def GetSid(req, sid=""): > > > > > > > > > sess = Session(req); > > > > > > > > > if sess.is_new(): > > > > > > > > > sess['u']="user"; > > > > > > > > > sess['p']="password"; > > > > > > > > > sid = sess.id(); > > > > > > > > > sess.save; > > > > > > > > > else: > > > > > > > > > sid = sess.id(); > > > > > > > > > req.write("%s" % sid); > > > > > > > > > return; > > > > > > > > > > > > > > > > > > # list mailboxes > > > > > > > > > def UseSession(req, sid=""): > > > > > > > > > req.write("%s" % sid); > > > > > > > > > sess = Session(req, sid, None, 1800, 0); > > > > > > > > > if sess.is_new(): > > > > > > > > > req.write("<br/>session new<br/>"); > > > > > > > > > sid = sess.id(); > > > > > > > > > else: > > > > > > > > > sess.load(); > > > > > > > > > req.write("%s" % sid); > > > > > > > > > > > > > > > > > > I first call the GetSid from my javascript and I am using > > > > > > > > > XmlHttpRequest that gets the sid from the responseText. > > > > > > > > > Then I call UseSession function with the sid passed to it > > > > > > > > > through the javascript, and I print the sid to make sure the > > > > > > > > > correct id was passed and that works, but after the Session() > > > > > > > > > is ran it always creates a new session, > > > > > > > > > I am not sure why... I used this link > > > > > > > > > http://www.modpython.org/pipermail/mod_python/2005-January/017111.html > > > > > > > > > as an example to follow... > > > > > > > > > > > > > > > > > > Any ideas? > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > __ > > > > > > > > > Donnie > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, 24 Feb 2005 15:36:43 -0600, Shawn Harrison <harrison at tbc.net> wrote: > > > > > > > > > > donnie jones wrote [02/24/05 2:55 PM]: > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > Could someone please give me an example of using the Session() > > > > > > > > > > > in modpython for passing data between functions? > > > > > > > > > > > I have been googling, but with no success.. > > > > > > > > > > > > > > > > > > > > > > The problem I am having is that each time I reload a page that calls > > > > > > > > > > > the function like below, it creates a new session. > > > > > > > > > > > > > > > > > > > > > > def test(req): > > > > > > > > > > > sess = Sess(req); > > > > > > > > > > > sid = sess.id(); > > > > > > > > > > > if sess.is_new(): > > > > > > > > > > > req.write("new session %s" % sid); > > > > > > > > > > > else: > > > > > > > > > > > sess.load(); > > > > > > > > > > > req.write("%s" % sess['username']); > > > > > > > > > > > > > > > > > > > > > > I am printing the session id and each time the function is loaded > > > > > > > > > > > I get a new session id, thus I cannot store data in the session > > > > > > > > > > > to use in other functions... > > > > > > > > > > > > > > > > > > > > class BaseSession(req[, sid, secret, timeout, lock, lockfile]) > > > > > > > > > > .. > > > > > > > > > > save() > > > > > > > > > > This method writes session values to storage. > > > > > > > > > > > > > > > > > > > > It doesn't appear that you are doing this. It only writes the data when > > > > > > > > > > you tell it to. > > > > > > > > > > > > > > > > > > > > Shawn Harrison > > > > > > > > > > _______________________________________________ > > > > > > > > > > Mod_python mailing list > > > > > > > > > > Mod_python at modpython.org > > > > > > > > > > http://mailman.modpython.org/mailman/listinfo/mod_python > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > Mod_python mailing list > > > > > > > > > Mod_python at modpython.org > > > > > > > > > http://mailman.modpython.org/mailman/listinfo/mod_python > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|