当我使用$ _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);
它可能是什么?
编辑: 上面的代码是完整的文件。唯一缺少的就是开场
<?php var_dump($_COOKIE['t']);
WAMP Server 2.4 Apache 2.4.4 PHP 5.4.12
答案 0 :(得分:0)
我明白了。我应该更加关注:
它发生在Chrome中,但不适用于Firefox。
这是由Chrome扩展引起的。我忘了我之前的项目遗留了一个延期。这是那些“下一页”扩展之一。例如,您可以单击下一步从website.com/img1.jpg转到website.com/img2.jpg等等。它必须按顺序预加载下一页。这改变了GET变量并导致cookie被更改。删除扩展,问题消失了。这么简单的事情让人非常沮丧!