gpt4 book ai didi

php - setcookie 不删除 cookie

转载 作者:搜寻专家 更新时间:2023-10-31 20:48:59 26 4
gpt4 key购买 nike

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

我有一个名为“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.php 和 logout.php 都在同一个文件夹中,即根目录,它与其他所有内容都在同一个文件夹中。

早些时候,这是可行的,但我所做的唯一更改是使网站上的标题栏成为它自己的文件(仍在根目录中),并为注销按钮采用 JavaScript 功能,这只是AJAX 调用和一些 jQuery 悬停效果,并使其成为自己的脚本文件,该文件位于 _js 文件夹中。但我根本没有更改 logout.php,所以当我直接导航到它时它应该仍然有效,对吧?是我的 setcookie 命令有问题,还是其他什么问题导致的?

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

编辑 2:我恢复到上次提交,一切都恢复正常了。我不知道为什么通过创建一些新文件(logout.php 根本没有改变)来重新组织我的站点会使某个脚本无法创建 cookie。

最佳答案

必须在任何内容发送到客户端之前设置 Cookie。确保在调用 setcookie 之前没有向客户端发送任何内容,因为它实际上是 Set-Cookie。通过请求返回的 header 。

像包含文件中的空格一样小的东西都可以破坏它。 (你说你处理过其他文件,检查在你的 <?php ... ?> 括号之外没有包含任何内容,例如调试回显或空格)

作为一般经验法则,如果我有一个完全是 PHP 代码的文件,我只包含开始标记 ( <?php ) 并免除最后一个标记。 PHP 仍将解析并运行,但这避免了文件末尾的任何空白可能成为问题。例如

mycodefile.php

<?php

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

function ...(){ }

另外,您提到了使用 chrome。在 chrome 中打开调试器 (ctrl+shft+i),然后单击 Network 选项卡。然后找到您的注销调用并选择它,然后单击 header 并验证您的 cookie 是否已被清除。 (同样,您可以点击资源并在Cookies下查看任何设置。

关于php - setcookie 不删除 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com