【发布时间】: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);
会是什么?
编辑: 上面的代码是完整的文件。唯一缺少的是一个开口
- WAMP 服务器正在运行。
- 在 Chrome 中访问 localsite/test.php?a=07
- 查看和记录变量转储(在本例中为“07”)。
- 在 Chrome 中访问 localsite/test2.php。其中包括:
<?php var_dump($_COOKIE['t']); - 查看和记录变量转储(在本例中为“08”)。
- 通过 Chrome 设置查看 cookie,看看它不是检索或显示错误。 Cookie t='08'。
WAMP 服务器 2.4 阿帕奇 2.4.4 PHP 5.4.12
【问题讨论】:
-
不太可能。您代码中的其他内容正在改变它。
-
不,就是这样。我将代码复制到一个新的测试文件中,并不断删除和简化以找到问题的核心。我在上面放的不是一个假设的例子,它实际上是我正在运行的代码和我得到的结果。
-
我无法重现此内容。您能否显示用于测试的两个页面的完整代码。还有 WAMP 和 Apache 和 PHP 的版本号。以及您在测试时使用的步骤。
标签: php google-chrome cookies wamp