当我使用$_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);
可能是什么?
编辑:上面的代码是完整的文件。唯一缺少的是一个开口
- WAMP服务器正在运行
- 访问localsite/test.php?铬中的a=07
- 查看并记录变量转储(在本例中为"07")
- 访问Chrome中的localsite/test2.php。包括:
<?php var_dump($_COOKIE['t']);
- 查看并记录变量转储(在本例中为"08")
- 通过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发生更改。删除了扩展,问题消失了。这么简单的事情让人沮丧!