簡體   English   中英

銷毀PHP會話

[英]Destroying PHP Session

stackoverflow上有很多關於destorying會話的頁面。 相信我,我一直在閱讀它們,我遇到了這個問題: 為什么我的會話仍然存在?

我的問題很簡單,我是否真的需要完成以下所有操作以正確銷毀會話?

$tmp = session_id();
session_destroy();
session_id($tmp);
unset($tmp);

這是建議采取這種極端措施的唯一頁面。 大多數頁面只是建議session_destroy();

只是為了澄清,因為似乎有一些混亂,我正在尋找最有效的方法。

提前致謝。

新答案已經停止進入,所以我根據所有答案輸入我學到的東西。 這是各種答案的集合。 希望它會幫助別人。 下面列出了破解會話100%有效的最有效方法:

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 = array();
$tmp = session_id();
session_id($tmp);
unset($tmp);
session_unset();
session_destroy();
session_write_close();
session_regenerate_id(True); // true indicates the need to delete the old session

感謝大家的幫助,告訴我如何做到這一點。 這不是一個人的努力。 我要特別感謝@Kerrek SB,@ Uday @Dhruvisha。 如果您有更多建議,請隨時添加評論,我將編輯我的答案。

session_destroy()銷毀與當前會話關聯的所有數據。 它不會取消設置與會話關聯的任何全局變量,也不會取消設置會話cookie。 要再次使用會話變量,必須調用session_start()。

為了完全終止會話,比如要將用戶注銷,還必須取消設置會話ID。 如果使用cookie來傳播會話ID(默認行為),則必須刪除會話cookie。 setcookie()可能會用於此。

示例使用$ _SESSION銷毀會話

// 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();
?>

請看這里了解更多詳情。

<?php
session_start();
$s_id = session_id();
echo $s_id;


session_destroy();
session_unset();


session_start();
session_regenerate_id(true);
$s_id = session_id();

?>

嘗試這個 。 它會工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM