PHP oturum ömür boyu sorun

4 Cevap php

Burada PHP5 kullanıyorum. Ben veritabanındaki kayıtlara karşı kullanıcı adı ve şifresi kontrol bir giriş sistemi yaptık. Ben açmış değeri saklamak için oturumları kullanmak istiyorum. Örneğin, ben kullanıcı başarıyla "oturum" bölge ulaştığınızda:

if($errors = 0) {
    $_SESSION['logged'] = "1";
}

Sorun en 5 dakika yani diyelim ben return false bu saatten sonra bir if($_SESSION['logged'] == "1") yaptığınızda $_SESSION['logged'] aktif kalmak istiyorum olmasıdır. Ayrıca, kullanıcı tarayıcıyı kapatır sonra bu oturumu silmek istiyorum. Kullanıcı güvenle onun masasına bırakabilir ve onu da birileri yenileme sonra 10 dakika bastığında veya tarayıcı kapatıldıktan sonra tekrar girdiğinde, oturumu zaten kaldırılacak ve erişim kısıtlanabilir böylece temelde, ben bir oturum yapılandırma istiyorum.

Herkes yardımcı olabilir? Teşekkürler.

4 Cevap

Kullan session_set_cookie_params() to change the lifetime of the session cookie. Note that by default, it is set to 0 kullanıcı tarayıcıyı çıkana kadar çerez ayarlandığında anlamına gelir . Siz şu şekilde yapabilirsiniz:

/* Set to 0 if you want the session
   cookie to be set until the user closes
   the browser. Use time() + seconds
   otherwise. */

session_set_cookie_params(0);
session_start();

Sonra biri bir sayfasını ziyaret her zaman, son etkinlik kez güncelleme edin.

if(($_SESSION['lastActivity'] + 300) < time()) {
    // timeout, destroy the session.
    session_destroy();
    unset($_SESSION);
    die('Timeout!');
} else {
    $_SESSION['lastActivity'] = time();
}

Bunun yerine bir ayarlama, neden ayarlamanız gerekmez $_SESSION['logged_time'] = time(); ve sonra uygulamanıza zamana karşı zaman () kontrol edin?

Aslında tüm oturumu sona istiyorsanız, tam özelliklerini sizin oturum işleyicisi bağlı olarak değişebilir, ancak varsayılan oturum işleyici (ve diğer iyi huylu oturum işleyicisi) sizin için {[(0) kontrol etmek isteyeceksiniz }]

Sen yapılandırma ayarını session.cookie_lifetime, örneğin değiştirebilir . php.ini veya bir htaccess dosyası:

session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0.

Eğer bir zaman aşımı dayalı süresinin bitmesine de var ve tarayıcı kapatıldığında son kullanma olamaz bu araçlar (bence). Yani belki en iyi bahis böylece anlamsız bu cevabı veren, varsayılan tutmak ve diğerleri önerilen gibi $_SESSION kendi zamanlayıcı ayarlamaktır.

Kullanıcı sitenizde kalır Oturumlar aslong hayatta kalmak. Belirli bir zaman aşımı ayarlamak için çerezleri kullanmak zorunda olacak.