Post by Stuart DallasPost by Stuart DallasI get that, but why do you want to run a script? Based on your previous
emails it looks like you're trying to manually expire a session. Sessions
usually expire due to a timeout since the last request, and I've never come
across a reason to do it any other way. So again, what is it that you are
actually trying to achieve?
If you want to apply a more complicated set of session expiry rules you
can
Post by Stuart Dallasdo so with a custom session handler, but I would question the need for
such a
Well im trying to achieve one thing here. If a user is logged in and if he
try to logged in again from different pc with the same username/password it
well flag him out. Because he already logged in.
About connection close, when the user close the connection it well clear the
flag.
So what do I use to accomplish this ?
I would start with a custom session handler. Possibly something similar to
this: http://3ft9.com/mysql-sessions/
Modify the methods that write the data to MySQL so it first extracts the
username and stores that in a separate field so you can do lookups on that.
Set the lifetime to something relatively short (say 60 seconds), then have
a webpage that the user must keep open that is making a request to the
server at roughly half that interval (e.g. every 30 seconds).
Modify the Session::gc method so it does what's necessary to cleanup the
network config when a session expires.
Add a method so your login system can query the session store for existing
users with that username, or alternatively modify the Session::write method
to refuse to store a session if there's already a session for that username.
Using a timeout rather than trying to detect when the user closes their
browser is preferable primarily due to the unreliability of that detection.
A number of browsers have rules around the use of the onunload event that
may prevent you from seeing a particular user disconnect.
Personally I would be looking in to implementing this at the network level
rather than PHP. The network must be able to detect when a device drops off
the network, and that would probably be a better place to implement the
cleanup.
-Stuart
--
Stuart Dallas
3ft9 Ltd
http://3ft9.com/