我知道這個問題有很多重複,但我嘗試了其中幾個,沒有一個已經被回答。PHP會話沒有註銷/未設置
這裏是我的logout.php代碼:
<?php
session_start();
require './codefiles/dbhelper.php';
$dbh = new DbHelper();
$dbh->Execute('UPDATE surveyors SET LoggedIn=\'0\', SessionID=\'\' WHERE Username=\''.$_SESSION['username'].'\'');
session_unset();
session_abort();
session_destroy();
$_SESSION = array();
unset($_SESSION['username']);
unset($dbh);
header('location:index.php');
?>
但會話變量太「執着」被刪除。會話值不會被清除,會話變量也不會被刪除。對象$ dbh未設置,但未設置$ _SESSION ['username'];
另一個無關的問題,儘管我設置LoggedIn = 0
,在我的SQL查詢中,它只是在數據庫中保持爲1。 LoggedIn
字段的類型是'位'。 SessionID
字段設置爲空白。
有什麼解決方法嗎?
編輯:
移除echo $dbh->error
,因爲它是不必要的。
編輯2:
新增session_destroy()
通過霍山Magdy建議。
你有沒有試過'session_destroy();'http://php.net/manual/en/function.session-destroy.php? – Hossam
哦,是的。我有。 –
糾正我,如果我錯了。中止會話似乎會關閉會話,從而阻止寫入存儲。我想知道是什麼阻止你使用'session_set_save_handler()'來實現'SessionHandlerInterface'類嗎? – frz3993