无法清除IE8 / 9中的cookie,但可以与Firefox和Chrome一起使用

时间:2012-11-23 05:42:18

标签: php internet-explorer

我有以下代码来检查会话是否存在以及是否创建了会话。

     session_start(); 
     $loginExists='';
     $show=1;



     if(isset($_SESSION['username'])){
            $loginExists = '<div style="color:#006633; font-family: calibri, Times, serif;  font-size:1.3em; font-weight:bold; margin-left:4%; margin-top:2%;">You  are already logged in!</div>';
            $show = 0;  
        }

     elseif (!isset($_SESSION['username'])){
        if (isset($_COOKIE['username'])){   
            $_SESSION['username'] = $_COOKIE['username'];
            $loginExists = '<div style="color:#006633; font-family: calibri, Times, serif;  font-size:1.3em; font-weight:bold; margin-left:4%; margin-top:2%;">You  are already logged in!</div>';
            $show = 0;}

Cookie的设置方式如下:

setcookie('username',$row['username'],time() + 10*24*3600,"/mysite/","");

我的问题是当我在IE8 / 9中清除coookies时,它无法清除cookie。我仍然可以导航到我的添加表单。在Firefox或Chrome中没有问题。

我试图通过转到Internet选项&gt;删除cookie。删除(浏览历史记录)&gt; Checked Coookies并将其删除。

非常困惑atm。

编辑:

添加表单(如何检查会话):

if (!isset($_SESSION['username'])){
            if (isset($_COOKIE['username'])){   
                $_SESSION['username'] = $_COOKIE['username'];

            }
        else{   
                $_SESSION['addForm'] = 1;
                header("Location:loginForm.php");   
            }

因此,您可以看到cookie是否通过浏览器清除,它应该重定向到登录页面。

2 个答案:

答案 0 :(得分:1)

(根据上述评论发布完整性答案)

IE的提示。关闭它。转到控制面板,找到互联网设置并从那里清除cookie(和文件,如果需要)。然后重新打开IE。请注意,如果您将其保持打开并点击刷新,它仍会发送以前的Cookie - 关闭它会对此进行排序。

问:这是IE的怪癖吗?

它似乎是 - 我认为IE内部加载一些缓存的文件和cookie,清除文件不会将它们从内存中删除。因此,如果出现此行为,请关闭以从内存中删除,然后清除文件并重新打开。

它也是Fiddler(调试器)中的“陷阱”,如果你点击Fiddler的“无条件重新发送”,它会重新发送之前的查询,包括cookie,即使cookie随后被删除。说实话,这是我所期待的,所以我不是说这是一个错误。只是注意到你需要监视发送的内容,因为它可能并不总是你在调试应用程序时所期望的。

答案 1 :(得分:0)

您是否尝试在设置会话后设置PHP的Cookie到期时间?