[thelist] php session variable needs to persist

Juha Suni juha.suni at ilmiantajat.fi
Wed Nov 9 08:46:26 CST 2005


Garth Hagerman wrote:
> I've got a  system using sessions
> which tracks the original referrerr as the visitor moves around the
> site just fine, but when they leave the site to go to Paypal and then
> come back to the "thanks for your order" page, the sessions data has
> been lost.  Is there a simple way to get the session data to persist?
> Or, do I need to write the referrer to a database and then query the
> db from the thanks page?

Even after reading other peoples posts about this subject, it still seems 
people make it more complicated than it is.

Under normal circumstances leaving your site and coming back a bit later 
(with the same browser window etc) should not break the session at all. I 
just tested this with two sites on different domains and servers, and 
bouncing between them causes no problems; They both remember their own 
sessions perfectly well (Why wouldn't they, the browser still has the cookie 
which it deals out as necessary since the window has not been closed).

Even if this would break the session in the same way that closing a window 
does, it could easily be overcome. PHP Sessions default their 
cookie-lifetimes to 0 (meaning that browser clears these cookies on close 
and therefore can no longer provide the session id), but this can be changed 
to be a specified time. (for example using session_set_cookie_params(900) 
before calling for session_start()). This way, even if the window was 
closed, the browser would remember the cookie with the session id, and hence 
the session would be remembered if the user came back within 15 minutes. 
This is also tested [1].

I just wanted to point out that you dont need to go the route of manually 
setting up cookies since the PHP sessions already support their use and 
parameters rather well.

Considering the above, I think there is something else going wrong if the 
session is not staying alive as it should.

[1] Note that if the session_cookie_lifetime is increased beyond garbage 
collection limits (default on apache is 24 minutes I think) then the garbage 
collection rules need to be modified too in order for the session to stay 
alive that long. Otherwise even if the cookie still exists in the browser, 
the actual session data from the server might have been purged.

HTH

-- 
Suni 




More information about the thelist mailing list