我正在尝试注销我的页面但是session_destroy和设置cookie不起作用。这是我的代码:
$page = $_GET["page"];
if ($page == "logout") {
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_destroy();
echo <<<html
<br /><br /><br /><p align="center"><b><font color="#000080">You've successfully logged out.</font></b></p>
<p align="right"><b><font size="3" color="#FF0000">Redirecting...</font></b></td>
html;
echo ("<META HTTP-EQUIV=Refresh CONTENT=\"4; URL=index.php\">");
exit ();
但它不起作用 - 会话没有被破坏,cookie也保持不变。我也尝试过将cookie设置为不同的值而没有成功。代码的其他部分创建cookie,访问和使用它们,但在注销部分我不能销毁它们。谁能告诉我这里有什么问题?是否应该在页面开头设置/取消设置/销毁cookie和会话,如session_start?或者是其他错误?
答案 0 :(得分:4)
setcookie(),因为这会影响在实际响应之前发送到客户端的标头。
您发布的代码段看起来像是在调用发布的代码之前回显了一些内容(输出字符串不包含打开的html标记)。因此,请确保在回显任何输出之前放置代码,但在调用session_start()之后,它应该可以正常工作。
答案 1 :(得分:1)
你必须在session_destroy()之前调用session_start(),因为session_destroy在当前会话上运行,如果你没有调用会话启动,则会不存在。
答案 2 :(得分:1)
页面在session_start()
之前是否有session_destroy()
?它需要。
答案 3 :(得分:0)
如果我们不打电话
在session_start()
在页面的开头,我们不能让会话变量在该页面上运行。