Ben bir web uygulaması için bir çıkış işlevi gidermek için çalışıyorum. Eğer oturum açtığınızda, uygulama kendi etki için ayarlanmış birkaç tanımlama vardır. Burada geçerli çıkış prosedürü:
- Bir çıkış sayfaya gönderen bir bağlantıyı tıklayın
- Oturum kapatma sayfası (bkz. aşağıdaki kodu)
session_destroy()
çağıran bir işlev çalışır ve aynı zamanda etki alanı için tüm çerezler aracılığıyla döngüsü ve geçmişte sona erecek onları ayarlar - Logout sayfa sonra düz HTML olan bir giriş sayfasına yönlendirir.
Bu sürecin sonunda, tüm diğer tanımlama unset, ama PHPSESSID
çerez, hala orada aynı değere sahiptir, ve hala oturumun sonunda sona erecek.
What am I missing here?
İşte yukarıda bahsettiğim çıkış fonksiyonu bulunuyor:
function log_out_current_user() {
// Destroy the session
if (isset($_SESSION)) {
session_destroy();
}
// Expire all of the user's cookies for this domain:
// give them a blank value and set them to expire
// in the past
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
// Explicitly unset this cookie - shouldn't be redundant,
// but it doesn't hurt to try
setcookie('PHPSESSID', '', time()-1000);
}
}