php mysql +会话注销错误

时间:2013-02-24 01:06:16

标签: php session logout

我正在创建一个登录和注销并注册的网站,但每次我想要注销如何修复它时会出现错误我认为eroor在会话中这个错误让我发疯我做了很多关于修复问题,但我没有得到任何帮助我的解决方案。

logout.php

<?php
session_start();

session_destroy();

if(isset($_COOKIE['id_cookie'])){

setcookie("id_cookie", "", time()-50000,"/");

setcookie("pass_cookie", "", time()-50000,"/");

}

if(isset($_SESSION['username'])){ 
echo("we could not log out try again!");
exit();
}else{
 header("Location: home.php");

}

?>

3 个答案:

答案 0 :(得分:0)

不确定您的错误,但阅读session_destroy会帮助您解决问题。

根据手册的说法,我的猜测是检查if(isset($_SESSION['username'])){时的错误:

  

session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。 要再次使用会话变量,必须调用session_start()。

您永远不会再次启动会话,因此您无法使用会话变量。

此外,为了进一步帮助记录用户,同一页面中的以下内容将有所帮助:

  

为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可能会用于此。

虽然它不在问题范围内 - 但它会帮助您成功注销脚本。

答案 1 :(得分:0)

session_destroy();会破坏所有会话,所以我不会按照你的If语句来检查用户名会话吗?

其次,你实际上并不需要使用括号来回显:

echo("we could not log out try again!"); exit();

可以写成:

echo "we could not log out try again!"; exit; 

答案 2 :(得分:0)

<?php
session_start();
session_destroy();
if(isset($_COOKIE['id_cookie'])){
  setcookie("id_cookie", "", time()-50000,"/");
  setcookie("pass_cookie", "", time()-50000,"/");
}

header("Location: home.php");
exit();
?>