【问题标题】:PHP: Reading a cookie set with JavascriptPHP:使用 Javascript 读取 cookie 集
【发布时间】:2015-08-11 17:36:55
【问题描述】:

使用 Javascript 和 Jquery,我在点击事件上创建了一个 cookie,然后将用户重定向到另一个页面。我这样做是这样的:

<script type="text/javascript">
$(".my-div").click(function() {

document.cookie ="answers=:" + myAnswers + "; path=/; domain=.mydomain.com;";

setTimeout("location.href = '/my-destination-page.php/';", 5000);

});

</script>

当我到达 my-destination-page.php 时,我可以看到在 Google Developer Tools 中正确设置了 cookie。但是,PHP 没有检测到它已设置:

<?php
var_dump($_COOKIE['answers']);
?>

上面返回一个大胖子NULL。

任何想法为什么会发生这种情况?

【问题讨论】:

  • 你试过var_dump($_COOKIE);看看里面有没有?
  • 我做到了。它返回数组(0){}
  • 检查请求本身,确保在请求destination.php 时设置了cookie 标头。我想知道这里是不是缓存问题(所以浏览器甚至没有发送请求)。

标签: javascript php jquery cookies


【解决方案1】:

尝试改变,

document.cookie ="answers=:" + myAnswers + "; path=/; domain=.mydomain.com;";

document.cookie ="answers=:" + myAnswers + "; expires=Thu, 12 Aug 2015 20:47:11 UTC;path=/; domain=.mydomain.com;";

然后检查

【讨论】:

  • 我试过了,但没有改变结果。在这一点上,我想我会使用 sessionStorage 而不是写一个 cookie(因为我不需要这个 cookie 持续超过一个会话)。
  • 其实你是对的。我之前复制/粘贴您的过期代码时一定犯了一个错误。因为我只想让这个特定的 cookie 持续一个会话,所以我将 expires 设置为 0,我能够完美地阅读它。谢谢!
【解决方案2】:

我没有测试您的特定代码——但我知道手动构建原始 cookie 字符串是一件很挑剔且容易出错的事情。如果您出错,服务器上的 cookie 处理代码(将无法识别您的 cookie)。

既然您已经在使用 jQuery,我会尝试使用 jQuery cookie plugin。即使您不想使用此插件进行部署,您也可以使用它来设置您的 cookie、检查请求标头并确定您的 cookie 字符串在哪里不正确(或确定您的 cookie 字符串 正确,并且您的问题出在其他地方)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 2015-07-13
    • 2010-11-24
    • 2011-02-23
    • 2015-10-18
    • 2016-02-16
    • 2012-11-20
    • 2011-10-02
    相关资源
    最近更新 更多