PHP Session kullanıcı sistemden çıktıktan sonra yok değil

6 Cevap php

Ben PHP Uygulama için bir kimlik doğrulama mekanizması oluşturmak için çalışıyorum ve zorluk oturumu yok yaşıyorum. Ben daha önce oturumu dizi içindeki kuruldu kimlik belirteci unsetting ve üzerinden oturumu yok denedim

session_destroy,

yanı sıra oturumu yok önce tamamen oturumu dizi sıfırlama. Ben başlık işlevini çağırma ve fonksiyon çağrıları sonunda geri benim index.php sayfasına gidiyorum. Ben de denedim

session_write_close

oturumu kapatmadan işlemek için. Ben kullanıcı oturum açtığında, ben geri index.php sayfasına gittiğinizde, ancak ben kullanıcı kimlik doğrulama verileri geri alıyorum, ben oturumun bir vardump yapmak ve bu hiçbir veri mevcut gösterir. Ben de sadece ben nasılsa sonrası doğrulama işleyicisi resubmitting değilim sağlamak için post veri vardump yaptım.

Burada ne herhangi bir öneriniz?

6 Cevap

Öncelikle, sen yapmazsan sadece bir uyarı verecektir, çünkü session_destroy(); çağırmadan önce session_start(); aradığınız emin olun.

Aynı zamanda, ikinci PHP: session_destroy,

In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.

Yalnızca session_unset () sonra adamcağız IE hala veri tutar kullanırsanız benim önerim hem kullanmaktır.

Fiddler kullanarak sunucuya tarayıcı gönderiyor ne kontrol ve ayrıca session.save_path sakladığınız ne bilgi denetlemek

Emin sayfayı önbelleğe mı?

Kimlik doğrulama belirteci üzerinde yazın:

session_start();
$_SESSION['varName'] = null;
$_SESSION = array();
session_destroy();

however when I go back to the index.php page

Sadece tarayıcı önbelleği talep edilmiş belirli bir sayfa değil mi? (Çoğu webbrowsers in CTRL+F5) sayfanın sert bir yenileme yapmak.

Bu nedeni olarak çıkıyor ve istek önbelleğe alma devre dışı bırakmak istiyorsanız, HTML <head>, sayfa başlıkların aşağıdaki kümesi ekleyebilirsiniz:

<meta http-equiv="cache-control" content="no-cache,no-store,must-revalidate">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">

veya, PHP'nin header() fonksiyonunu kullanarak PHP kodu:

header('cache-control: no-cache,no-store,must-revalidate'); // HTTP 1.1.
header('pragma: no-cache'); // HTTP 1.0.
header('expires: 0'); // Proxies.

Testten önce tarayıcınızın önbelleğini temizleyin unutmayın :)