(PHP) Nasıl doğru oturum tanımlama yok?

3 Cevap php

Ben doğru bir yönetici kullanıcı oturumunu çalışıyorum. İşte benim fonksiyonudur:

function logout()
{
    $_SESSION = array(); //destroy all of the session variables
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
    session_destroy();
}

Ben parola kimlik doğrulaması kez temelde, ben geçerli (sadece 1 kullanıcı toplam) olarak oturum ayarlayın. Admin çıkış çarptığında sadece tarayıcıda saklanan oturum çerezlerini kullanarak geri yönetici sayfasına gitmek değil böylece Şimdi, ben, mevcut oturumu yok, ve aynı zamanda çerez yok etmek istiyorlar. ama benim kod çalışmıyor. i logoutu vurdu, ve ben sadece doğrudan geri yönetici sayfasına gidebilirsiniz. benim çerezleri silebilir ancak, işlevsellik mükemmel. ne yani burada çerez silme fonksiyonu ile yanlış?

3 Cevap

(Ben yapmazsam beni affet) doğru anlamak, bu temel kavram kusurlu olması gerekir. Bir oturumu sunucu üzerinde yok ise, çerez kimliği geçersiz olmalıdır, çünkü tanımlama yok etmeye gerek olmamalıdır.

Ancak, belki, senin sorunun çerez değil, ama tarayıcı yönetici sayfanın önbelleğe alınmış sürümünü gösteriyor. Olabilir mi? Eğer F5 vurduğunda kaybolur, muhtemelen bu. Bu hakkı cache-control başlıkları ayarlayarak sıralanabilir.

Önbelleğe alma nasıl ayarlanacağı konusunda this SO question göz atın. Soru (önbellek tarayıcıları zorlama) tam tersi olduğunu ama kapalı önbelleğe açmak için değiştirmek anlamaya olacak.

Eğer gerçekten kapak istiyorsanız tüm üsleri yapmaya çalışın:

setcookie (session_id(), "", time() - 3600);
session_destroy();
session_write_close();

Yani PHP yürütme kalanı için oturum verilere daha fazla erişimi engellemek gerekir. Browswer hala çerez $ _SESSION süper boş olacak ancak ayarlanan gösterebilir

Sadece bir oturum çerezleri dolan sorunlar yaşıyorsanız diğerleri için ipucu:

PHP - why can't I get rid of this session id cookie?

Her zaman yukarıdaki linkte soruya cevap olarak session_get_cookie_params () kullanın.