这是我设置的登录cookie
setcookie('username[0]',$username,time()+(60*60*24*365));
setcookie('username[1]',$userid,time()+(60*60*24*365));
setcookie('username[2]',$subscribed,time()+(60*60*24*365));
setcookie('password',md5($password),time()+(60*60*24*365));
setcookie('admin',$admin,time()+(60*60*24*365));
这是我的退出功能
function logout($return) {
setcookie('username[0]', '', time()-(60*60*24*365));
setcookie('username[1]', '', time()-(60*60*24*365));
setcookie('username[2]', '', time()-(60*60*24*365));
setcookie('password', '', time()-(60*60*24*365));
setcookie('admin', '', time()-(60*60*24*365));
header( 'Location: ' . $return );
echo "<div class='fontall'><span class='fontdif'>You've been logged out. </span><a href='$return'>Click Here</a><span class='fontdif' to return</span></div>";
}
当我尝试注销并返回页面时,我仍然登录?我做错了什么?
答案 0 :(得分:4)
如果您收到“无法修改标头”错误,则表示您在setcookie
之前回复了某些内容。 setcookie
必须在任何内容回响之前完成。
与其他标题一样,Cookie必须在您的任何输出之前发送 脚本(这是一个协议限制)。这要求你放置 在任何输出之前调用此函数,包括和 标签以及任何空格。
答案 1 :(得分:0)
// 1. Find the session
session_start();
// 2. Unset all the session variables
$_SESSION = array();
// 3. Destroy the session cookie
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 4. Destroy the session
session_destroy();
那应该有用。 可能..我没有破坏会议?
答案 2 :(得分:0)
代码似乎没有错 - 他们应该删除cookie。你确定没有删除cookie吗?注销后,请尝试检查cookie是否存在。您可以使用显示活动cookie的浏览器来执行此操作。或者您也可以尝试使用PHP阅读cookie。
其次,您如何检查会话是否仍然有效?你能分享那段代码吗?你在哪里检查你的会话 - 你是在所有页面上做的吗?