cookies不会删除

时间:2012-01-29 05:42:01

标签: php

这是我设置的登录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>";

        }

当我尝试注销并返回页面时,我仍然登录?我做错了什么?

3 个答案:

答案 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。

其次,您如何检查会话是否仍然有效?你能分享那段代码吗?你在哪里检查你的会话 - 你是在所有页面上做的吗?