【发布时间】:2017-04-16 04:41:10
【问题描述】:
我知道这个问题有很多重复,但我尝试了其中几个,但没有一个得到回答。
这是我的 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'];
另一个不相关的问题,尽管我在我的 SQL 查询中设置了 LoggedIn = 0,但它在数据库中只是保持为 1。 LoggedIn 字段的类型为“位”。 SessionID 字段设置为空白。
请问有什么解决办法吗?
编辑:
删除了echo $dbh->error,因为它是不必要的。
编辑 2:
按照 Hossam Magdy 的建议添加了 session_destroy()。
【问题讨论】:
-
你试过
session_destroy();php.net/manual/en/function.session-destroy.php吗? -
哦,是的。我有。
-
如果我错了,请纠正我。中止会话似乎就像关闭它,从而阻止写入存储。我想知道是什么阻止你使用
session_set_save_handler()和实现SessionHandlerInterface的类? -
@frz3993:我会给
session_set_save_handler()一个机会。