php setcookie 清除,php
我真的不知道这是什么问题.
我有一个名为“ login.php”的脚本,可以很好地工作.它使用AJAX调用,如果成功返回,则页面刷新并登录用户.使用以下命令在该页面上设置cookie
setcookie("main", $row[0], time() + 3600, "/")
然后,我有一个名为“ logout.php”的脚本.称为相同方式(先进行AJAX,然后进行页面刷新).它只有两行:
setcookie("main", "", time() - 3600, "/");
echo "Done";
?>
从页面调用它不起作用,所以我只是在浏览器中加载了logout.php.输出为“完成”,但是在Chrome中检查我的cookie时,发现cookie仍设置为“ 1”(即$row [0]),并在login.php中设置的时间到期.
login.php和logout.php都在同一个文件夹中,即根目录,该目录与其他所有文件都位于同一文件夹中.
之前,这是可行的,但我所做的唯一更改是将网站上的标题栏设置为其自己的文件(仍位于根目录中),并为注销按钮采用JavaScript功能,这只是一个AJAX调用和一些jQuery悬停效果,并使其成为自己的脚本文件,该文件位于_js文件夹中.但是我根本没有更改logout.php,因此当我直接导航到logout.php时,它仍然可以工作,对吗?我的setcookie命令有问题吗,或者是什么引起了其他问题?
编辑:我尝试将其设置为在100秒而不是-3600内过期,然后尝试更改其名称,以便可以将其识别为完全独立的cookie.他们都没有让它露面. Cookie根本就没有设置.
编辑2:我恢复到上一次提交,并且一切都再次正常工作.我不知道为什么通过创建一些新文件(根本不更改logout.php)来重新组织网站会使某个脚本无法创建cookie.
解决方法:
必须先设置Cookie,然后再将任何内容发送给客户端.确保在调用setcookie之前没有向客户端发送任何消息,因为它实际上是通过请求返回的Set-Cookie标头.
包含文件中只有空格的内容可能会破坏它. (您说过您在处理其他文件,请检查所包含的内容是否在括号之外是否包含调试回显或空白).
根据一般经验,如果我的文件是完全PHP代码的,则仅包含开始标记(
mycodefile.php
define('...', ...);
function ...(){ }
另外,您提到使用chrome.在Chrome(ctrl shft i)中打开调试器,然后点击“网络”标签.然后找到您的注销呼叫并将其选中,然后单击“标题”并确认您的cookie被清除. (同样,您可以单击资源,然后在Cookies下查看以查看任何集合.
标签:cookies,php
来源: .html