[英]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.