从$ _GET设置时,为什么我设置的cookie(字符串)的值增加1?

时间:2014-11-11 23:17:08

标签: php google-chrome cookies wamp

当我使用$ _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'。
  7. WAMP Server 2.4 Apache 2.4.4 PHP 5.4.12

1 个答案:

答案 0 :(得分:0)

我明白了。我应该更加关注:

  

它发生在Chrome中,但不适用于Firefox。

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