我正在创建一个具有登录、注销和注册功能的网站,但每次我想注销时都会出现一个错误。如何修复它。我认为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();
?>