php-mysql+会话注销错误


php mysql + sessions errors with logout

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

注销.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");
}
?>

不确定您的错误,但阅读有关session_destroy的信息会对您有所帮助。

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

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

您再也不会启动会话,因此不能使用会话变量。

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

为了完全终止会话,就像注销用户一样,会话id也必须是未设置的。如果使用cookie来传播会话id(默认行为),则必须删除会话cookie。setcookie()可以用于此。

虽然它不在问题的范围内,但它将帮助您制作一个成功的注销脚本。

session_destroy();会破坏所有会话,所以我没有遵循If语句的要点来检查用户名会话??

其次,你实际上不需要括号来表示回声:

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

可以写成:

echo "we could not log out try again!"; exit; 
<?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();
?>