[英]Why isn't this session destroyed?
我有這個logout.php頁面,用於從我的 PHP 項目中注銷。
<?php
session_start();
$conn4=mysqli_connect("localhost", "root", "", "winkcage");
$useronline=$_SESSION["unamsession"];
$queryseen="UPDATE signup SET seen='' WHERE username='$useronline'";
$queryseenrun=mysqli_query($conn4, $queryseen);
session_destroy();
session_unset();
header('Location: login.php');
?>
[在 Firefox 和 Chrome 中]:當我點擊注銷按鈕時,頁面被重定向到login.php ,但是當我在不同的選項卡中再次加載主頁時(只有在會話沒有被破壞時才應該打開),它會加載重定向到 login.php (這將是我的索引頁)。
我不知道這段代碼有什么問題。 在 session_unset() 之前編寫 session_destroy() 有什么不同嗎? 我如何解決它?
[只有Chrome,在Firefox中也可以]:當我關閉Firefox時,會話會自動銷毀,這很明顯,但在Chrome中則不然。 Chrome 並沒有破壞它。 怎么可能? 我已經徹底檢查了我的代碼,但沒有找到任何與 cookie 相關的代碼行。
另一個問題是,當我登錄幾分鍾(我猜是 20-30)時,會話會自動銷毀。 我是否可能為此錯誤地編寫了一些代碼? 還是默認的?
不確定你是否在使用 cookie,但我認為這會解決它....
$queryseenrun=mysqli_query($conn4, $queryseen);
session_unset();
$_SESSION = array();
// get session parameters
$params = session_get_cookie_params();
//delete the actual cppkie
setcookie(session_name(),'', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
// Destroy session
session_destroy();
//redirect to the index.php
header("Location: login.php");
exit();
來自http://php.net/manual/en/function.session-unset.php
會話未設置只是清除會話以供使用,但它不會被破壞,它仍然在用戶的計算機上。
請嘗試以下操作:
session_start();
session_destroy();
$_SESSION = array();
header('Location: index.php');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.