微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-setcookie不删除cookie

我真的不知道这是什么问题.

我有一个名为“ login.PHP”的脚本,可以很好地工作.它使用AJAX调用,如果成功返回,则页面刷新并登录用户.使用以下命令在该页面上设置cookie

setcookie("main", $row[0], time() + 3600, "/")

然后,我有一个名为“ logout.PHP”的脚本.称为相同方式(先进行AJAX,然后进行页面刷新).它只有两行:

<?PHP
    setcookie("main", "", time() - 3600, "/");
    echo "Done";
?>

页面调用它不起作用,所以我只是在浏览器中加载了logout.PHP.输出为“完成”,但是在Chrome中检查我的cookie时,发现cookie仍设置为“ 1”(即$row [0]),并在login.PHP中设置的时间到期.

login.PHPlogout.PHP都在同一个文件夹中,即根目录,该目录与其他所有文件都位于同一文件夹中.

之前,这是可行的,但我所做的唯一更改是将网站上的标题栏设置为其自己的文件(仍位于根目录中),并为注销按钮采用JavaScript功能,这只是一个AJAX调用和一些jQuery悬停效果,并使其成为自己的脚本文件,该文件位于_js文件夹中.但是我根本没有更改logout.PHP,因此当我直接导航到logout.PHP时,它仍然可以工作,对吗?我的setcookie命令有问题吗,或者是什么引起了其他问题?

编辑:我尝试将其设置为在100秒而不是-3600内过期,然后尝试更改其名称,以便可以将其识别为完全独立的cookie.他们都没有让它露面. Cookie根本就没有设置.

编辑2:我恢复到上一次提交,并且一切都再次正常工作.我不知道为什么通过创建一些新文件(根本不更改logout.PHP)来重新组织网站会使某个脚本无法创建cookie.

解决方法:

必须先设置Cookie,然后再将任何内容发送给客户端.确保在调用setcookie之前没有向客户端发送任何消息,因为它实际上是通过请求返回的Set-Cookie标头.

包含文件中只有空格的内容可能会破坏它. (您说过您在处理其他文件,请检查所包含的内容是否在<?PHP ...?>括号之外是否包含调试回显或空白).

根据一般经验,如果我的文件是完全PHP代码的,则仅包含开始标记(<?PHP),并排除最后一个. PHP仍将解析并运行,但是这避免了文件末尾可能出现问题的任何空格.例如 mycodefile.PHP

<?PHP

  define('...', ...);

  function ...(){ }

另外,您提到使用chrome.在Chrome(ctrl shft i)中打开调试器,然后点击“网络”标签.然后找到您的注销呼叫并将其选中,然后单击“标题”并确认您的cookie被清除. (同样,您可以单击资源,然后在Cookies下查看以查看任何集合.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐