session kendisi tarafından sona asla

3 Cevap php

I m using login function in my site with session. This session of mine gets expired after few minutes irrespective of that user has logged out or not. Now what i want is that the session should only gets expired when a user logs out.If a user doesnt log out his account and then comes back after 2-3 days even then he should appear logged in.

i onlar geçilmek için bir oturum için zaman incresed bazı örnekler bulduk ama ben sadece ne olursa olsun dışarı oturum sürdü zaman kullanıcı tarafından oturumunu olay sona gerektiğini istiyorum.

ben nasıl yapabilirim?

Edit:

session_cache_expire(0);
session_start();

bunu yapmak için yazma yolu nedir?

3 Cevap

Sık sık kullanılan bir çözüm, bu durumda, şudur:

  • Bir çok uzun değil oturum süresine sahip: kullanıcı aktif değilse o (o işleri sadece yolu - ve çok sayıda kullanıcı varsa o sunucu için daha iyi) sona erecek
  • kullanıcı oturum açtığında, onu kabul edilmesi için gerekli olan ne içeren bir cookie
  • o (çerez ile ve etkin bir oturumu olmadan) geri sitede gelirse, aynı anda oturumu yeniden oluştururken, onu log-in otomobiline o kurabiyenin içerdiği bilgileri kullanın.

Bu şekilde:

  • Eğer seans binlerce sebepsiz ile "aktif" yok
  • Eğer standart yol oturumları iş tutmak

Ve en azından bakış kullanıcının bakış açısından, "dışarı looged varlık asla" bir avantajı var.

Also note that with "normal" sessions, the cookie containing the session id will be deleted when the user closes his browser -- so, he will be disconnected, no matter how long the session's lifetime is.
With the solution I propose, you are the one who sets up how long the cookie should remain on the user's computer ;-)


It means, though, that when a user manually logs-out, you have to delete both his session and the cookie, of course -- so he's not immediatly re-auto-logged-in.


Of course, you have to be careful about what you set in the cookie : a cookie is not quite secure, so don't store a password in it, for instance ;-)


Actually, this way of doing things is how the "remember me" feature often works ; except, here, your users will not have to check a checkbox to activate "remember me" ;-)


If you don't have the time to develop that kind of stuff, a pretty quick and dirty way is to use some Ajax request on all your pages, that will just "ping" a PHP page on the server -- this will keep the session active (but it's not quite a good way of doing things : you'll still have LOTS of sessions on the server, you'll have lots of useless request... and it will only work as long as the user doesn't close his browser).

Sen PHP iç oturum başına taşıma ile bunu yapamazsınız. PHP her kullanıcının kendi tarayıcısını kapattığında sona erecek bir oturum çerezdeki oturum id dışarı göndereceğiz. Çeşit elde etmek Eğer kullanıcının tarayıcısında uzun ömürlü çerez ayarlar ve bu çerezlerin tanıma ve tanımlama değeri ve ilgili kullanıcı hesabı arasındaki eşleme işleyen bazı ekli kodu gerekir oto-giriş.

Eğer bir çok şey bakmak gerekir böylece bu büyük güvenlik sorunları etkilediğini unutmayın. Olası bir otomatik oturum açma özelliği çalışmıyor olabilir nasıl aşağıdaki okuyunuz:

Test ederken size çerezleri kaldırmak mı? Çerezlerin etkin? Eğer kod yerde oturumu destory musunuz?

Ayrıca, başka bir yazı benim cevaba bakınız: sonsuza kadar çevrimiçi kalmak kullanıcıyı istiyorsanız Sadece bir cronjob / sheduled görev yapmıyoruz içeri imzalı kalmak için nasıl açıklar http://stackoverflow.com/questions/1300990/quick-question-about-sessions-in-php/1301012#1301012 ki.