- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我真的不知道这里的问题是什么。
我有一个名为“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/
我正在尝试如下设置 cookie。 CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieMan
我看到很多人问过类似的问题,所以如果我重复了,但我在其他帖子中找不到答案,请见谅。 这只是一个测试页面,在本地主机上运行。我有一个 HTML 登录页面,将表单数据发送到 PHP 脚本,该脚本正在检查
我已经进行了登录,它设置了一个带有估算电子邮件地址值的 cookie,因此在 global.php 文件中,它使用以下方式存储用户数据的数组: $email = $_COOKIE["PeopleHub
您好,我正在尝试在我的网站上使用 cookie。在我的站点中实现它们之前,我创建了两个测试页面来试用它们,但它似乎效果不佳。 第一页有: 第二页有: 所以为了测试它,我先转到第一页,然后转到第二页
您好,我正在尝试在我的网站上使用 cookie。在我的站点中实现它们之前,我创建了两个测试页面来试用它们,但它似乎效果不佳。 第一页有: 第二页有: 所以为了测试它,我先转到第一页,然后转到第二页
我定期在 Twitter 应用程序的回调页面中设置 cookie。一切正常。 现在,我使用 jQuery 提交表单,回调函数激活 PHP 脚本。该脚本只需将一个 cookie 设置为 $_POST 的
所以,我有一个简单的脚本,允许您在任何“团队名称”之间进行选择。当您选择并提交时,它应该使用选择的值(团队名称的哈希版本)执行 php setcookie。 相关代码如下: 和 HTML Selec
quys,我的 PHP 应用程序有问题。 我有 2 个页面用于登录和注册。两个页面都使用通用的 cookies 类。一切正常,除了一件事:setcookie() 仅适用于 /signin 页面(coo
我想做的是设置 cookie至 Response经过一些Validation在后端。 这是我的代码: Controller public class MyController : Controller
我有一个 php 文件: 0){ $cookie_name = "auth"; $cookie_value = "ok"; $cookie_expire = "0";
我有一个设置 cookie 的页面,如果您选中一个复选框,它会回显一个字符串。字符串打印正确,但 cookie 从未设置,我不知道为什么。 " method="post"> Option 1:
在一页上我有这样的东西 setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); 在我的后续页面上 var_dump($_COOKIE); 我可
有什么方法可以设置在子域上不可可读的 cookie?换句话说,让 cookie 在 domain.com 上可用,但不 www.domain.com 或 xyz.domain.com 。 //this
一些不是我编写的应用程序,也不是用 PHP 编写的,它为域 www.example.com 创建了一个 cookie。 我正在尝试替换该 cookie。所以在 PHP 中我做到了: setcookie
这个问题在这里已经有了答案: PHP - setcookie(); not working (6 个答案) 关闭 7 年前。 我正在使用这个代码 setcookie("we", 2, time()+
我的登录似乎没有创建 cookie。该表单一直到达脚本的 cookie 创建部分,甚至回显已创建 cookie,但实际上并未创建 cookie。 这是我的代码的 cookie 部分: if (!$er
在 example on php.net使用session_destroy(),它指定删除一个cookie: if (ini_get("session.use_cookies")) { $pa
我正在尝试将 PHP cookie 设置为自用户登录后 1 年后过期,我这样做是这样的: setcookie("myCookie",'exampleUserName',(365 * 24 * 60)
我希望有人可以帮助解决我在处理某些代码时遇到的这个小问题。请记住,这只是一个业余爱好网站,我知道存在安全漏洞。我编写了一个名为 set_remember_cookies 的函数,当用户选中“记住我”框
在 example on php.net使用session_destroy(),它指定删除一个cookie: if (ini_get("session.use_cookies")) { $pa
我是一名优秀的程序员,十分优秀!