【问题标题】:Why is the value of a cookie I'm setting (a string) increasing by one when being set from a $_GET?为什么我设置的 cookie(字符串)的值在从 $_GET 设置时会增加 1?
【发布时间】:2014-11-19 05:38:12
【问题描述】:

当我使用 $_GET 设置的变量将 cookie 设置为两个数字字符串时,它会在 cookie 中存储为高一个数字。但是,变量实际上是正确的!它发生在 Chrome 中,但不是 Firefox。我在 WAMP 服务器上并在本地访问。

如果我设置 test.php?a=07

$val = $_GET['a'];
setcookie('t', $val, time() + (86400 * 30), '/');
var_dump($val);

返回

string '07' (length=2)

这就是事情变得疯狂的地方。在另一个脚本中:

var_dump($_COOKIE['t']);

返回

string '08' (length=2)

喜欢 90% 的时间。如果我将 cookie 设置为一堆,有时它会返回“07”。我检查了 cookie 本身,它被存储为更高的数字。所以这不是检索。它也适用于其他号码。

如果我在脚本中设置变量,它就不会发生。

$val = '07';
setcookie('t', $val, time() + (86400 * 30), '/');
var_dump($val);

工作正常。就像这样:

setcookie('t', '07', time() + (86400 * 30), '/');
var_dump($val);

会是什么?

编辑: 上面的代码是完整的文件。唯一缺少的是一个开口

  1. WAMP 服务器正在运行。
  2. 在 Chrome 中访问 localsite/test.php?a=07
  3. 查看和记录变量转储(在本例中为“07”)。
  4. 在 Chrome 中访问 localsite/test2.php。其中包括:<?php var_dump($_COOKIE['t']);
  5. 查看和记录变量转储(在本例中为“08”)。
  6. 通过 Chrome 设置查看 cookie,看看它不是检索或显示错误。 Cookie t='08'。

WAMP 服务器 2.4 阿帕奇 2.4.4 PHP 5.4.12

【问题讨论】:

  • 不太可能。您代码中的其他内容正在改变它。
  • 不,就是这样。我将代码复制到一个新的测试文件中,并不断删除和简化以找到问题的核心。我在上面放的不是一个假设的例子,它实际上是我正在运行的代码和我得到的结果。
  • 我无法重现此内容。您能否显示用于测试的两个页面的完整代码。还有 WAMP 和 Apache 和 PHP 的版本号。以及您在测试时使用的步骤。

标签: php google-chrome cookies wamp


【解决方案1】:

我想通了。我真的应该更加关注:

它发生在 Chrome 中,但不是 Firefox。

这是由 Chrome 扩展程序引起的。我忘记了我之前的项目留下了一个扩展。它是那些“下一页”扩展之一。例如,您可以单击下一步从 website.com/img1.jpg 转到 website.com/img2.jpg 等等。它一定是按顺序预加载了下一页。这改变了 GET 变量并导致 cookie 被改变。删除扩展,问题消失了。这么简单的事情让我很沮丧!

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2011-10-21
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多