Onlar benim php web çıktığınızda Kuvvetleri kullanıcıların çıkış için?

7 Cevap php

Benim php uygulamasında, ben bir kullanıcı http://mysite.com benim sitede herhangi bir sayfa bırakır ve http://someotherwebsite.com, ben istiyorum giderse bir kullanıcı oturum olup olmadığını izlemek için $ _SESSION kullanıyorum Otomatik olarak oturum, onlar üzerinde herhangi bir sayfaya dönerseniz http://mysite.com, tekrar giriş yapmanız gerekir böyle.

Bunu yapmanın kolay bir yolu var mı?

7 Cevap

Bir kullanıcı leaves sitenizin, en iyi bahis oturumları bir zaman aşımı uygulamak olmak ne zaman açıkça söyleyemem.

Cevapların çoğu söylediğim gibi, sen could Opera gibi, onu desteklemeyen bir web tarayıcısı kullanarak, JavaScript olayı onbeforeunload but the user can by-pass this by disabling JavaScript or, as BalusC had pointed out ile kontrol edin.

Bu nedenle, ben şiddetle oturumları bir zaman aşımı uygulama bir logout zorlamak için en iyi yol olduğuna inanıyorum.

Siz oturum öldürecek bazı sunucu tarafı komut onbeforeunload olay bir AJAX arama gerçekleştirebilir.

Oturumların bir zaman aşımı koyarak dışında - gerçekten. Akla gelen tek yolu yangınları kullanıcı geçerli sayfayı bırakır onbeforeunload JavaScript olay olduğunu, ancak bu olay where kullanıcı gidiyor bilmiyor. Eğer really bunu yapmak istiyorsanız, ancak, maybe aşağıdaki hacky çözüm (denenmemiş) dayalı bir şey inşa edilebilir:

  • sunucuya bir AJAX çağrısı gönderir bir onbeforeunload olay ayarlayın. (Nasıl başarıyla yapmak için - sayfa kapalı alır önce çağrı alır bu yüzden - kendi bir sorun, SO bazı sonuçlar gerekir üzerinde "onbeforeunload ajax" için bir arama motorudur.

  • Ajax arama Bu kullanıcının oturumu, diyelim ki, on beş saniye içinde ölmek üzere olduğunu söyleyerek bir geri sayım başlayacak.

  • Kullanıcı siteyi terk edilirse, geri sayım uygular.

  • Kullanıcı sitenizde farklı bir sayfaya gidiyor ise sonraki sayfayı servis sırasında, herhangi bir "die" COUNTDOWNS temizleyin.

Bir Ajax isteği starting, bir geri sayım sonraki sayfa var zaten eliminated O geri sayım sonra sunucuda geldiğinde o olabilirdi çünkü bu sallantılı olması muhtemeldir. Eğer gerçekten bunu yapmak gerekirse, bu bir yönü olabilir. JS ile kullanıcılar için işleri tabii ki, sadece sağladı.

Bu oturumlar (örneğin 90 saniye) son derece düşük bir zaman aşımı koymak olacaktır, ve size hizmet her sayfada bir iframe koymak nasıl uygulanacağı ikinci bir fikir. Bu iframe sonra sayfasına bir çağrı her 60 saniyede yapacak.

Bu JavaScript olmadan çalışmak istiyorsunuz, ama (ben 6 veya 7 durdu olmadığını bilmiyorum?) Internet Explorer'ın eski sürümlerinde can sıkıcı tıklayarak sesler oluşturabilir

Yapamazsın (, böylece kısa bir süre için zaman aşımını ayarlamak olabilir ama sizin oturumları bir süre sonra otomatik olarak zaman aşımına uğrar.)

Ben (çok değil) PHP hakkında bildiklerini uygulama hiç de siteyi terk bilmek istiyorsunuz? Eğer someotherwebsite.com giderseniz onlar dönünceye kadar, kod tekrar denir.

Unfortunately Not Really, This is one of the big problems with web applications. Your applications has no way of knowing that the browser has moved on to a different website.

As ChristohpeD mentions you can set the session timeout. Just remember that your site will only refresh the time when the server recieves a post or some kind of javascript ping.

Umut olur