我知道这个问题有很多重复,但我尝试了其中几个,没有一个已经被回答。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