Oturum oturum temizlemek için yeterli değil mi destory

3 Cevap php

Kullanıcı bir çıkış düğmeye tıkladığında, ben sadece bunu yapan bir script bağlanmak

session_destroy();
session_start();

Ben bu tür tekrar sayfasını yüklediğinizde ancak, otomatik sanki beni günlükleri $_SESSION['logged'] ve $_SESSION['username'] gibi tüm $_SESSION değişkenleri sıfırlamak için yeterli olacağını düşündüm oturum hala etkin.

3 Cevap

Olarak documentation explains,

Bu oturumda, ya da unset oturum tanımlama ile ilişkili küresel değişkenlerin herhangi yoketmek değil. Tekrar oturum değişkenleri kullanmak için session_start () çağrısı yapılmalıdır.

Tamamen, oturum öldürmek dışarı kullanıcı oturum istiyorum için, session id de unset olmalıdır. Cookie session id (varsayılan davranış) yaymak için kullanılan, daha sonra oturum tanımlama silinmesi gerekir. setcookie () bunun için kullanılabilmektedir.

Ayrıca bunu yapmak için nasıl bir örnek verir:

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// Finally, destroy the session.
session_destroy();
?>

Sadece dizi temizleyerek dışarı kullanıcı oturum için yeterlidir; onlar hala aynı oturum kimliğine sahip olacak, ama $_SESSION boş olacak, bu yüzden $_SESSION['logged'] ve $_SESSION['username'] yok edecek

Elbette sadece $ session_destroy () olurdu; kendi, $, session_start olmadan (); logout sayfa içinde?

Kullanıcıların oturum değişkeni kontrol etmek için page_ınit () olayını kullanmak zorunda. Eğer sayfa yük kullanıcılar oturum değişkeni kontrol ederseniz o zaman bir aktif oturum olarak size gösterecektir. Aşağıdaki gibi (page_ınit at) olayı, kullanıcıların oturum kontrol edebilirsiniz hangi tek yolu var ..

    protected void Page_init(object sender, EventArgs e)
    {
        if (Session["User"] == null)
        {
            Response.Redirect("home.aspx");
        }
    }

Eğer tüm sayfalarda bu olayı kullanmak, böylece session_destroy kullanarak oturumu yok if () olabilir; yöntem, daha sonra giriş sayfasına yönlendirilirsiniz.

Thank You