> Using a timeout rather than trying to detect when the user closes their > browser is preferable primarily due to the unreliability of that detection. I can't use time out. What if the user want to stay online more time ? > On 24 June 2014 18:18, hadi <almarzuki2011@xxxxxxxxxxx> wrote: > > > >I 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 > > >do so with a custom session handler, but I would question the need > > >for > > such a > > >thing. > > > > 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/
<<attachment: smime.p7s>>