为什么饼干的价值是I';m设置(字符串),当从$_GET设置时增加一


Why is the value of a cookie I'm setting (a string) increasing by one when being set from a $_GET?

当我使用$_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%的时间都是这样。如果我把饼干设置成一堆,有时它会返回"07"。我已经检查了饼干本身,它被存储为较高的数字。所以这不是检索。它也适用于其他数字。

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

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

工作良好。正如:

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

可能是什么?

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

  1. WAMP服务器正在运行
  2. 访问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.4Apache 2.4.4PHP 5.4.12

我想明白了。我真的应该多关注一下:

这种情况发生在Chrome浏览器中,但不是Firefox。

它是由Chrome扩展引起的。我忘了我有一个以前项目遗留下来的延期。这是一个"下一页"的扩展。例如,您可以单击"下一步"从website.com/img1.jpg转到website.com/imm2.jpg,依此类推。它一定已经按顺序预加载了下一页。这更改了GET变量并导致cookie发生更改。删除了扩展,问题消失了。这么简单的事情让人沮丧!