我目前正在处理我网站的用户登录部分。我一直在测试3种浏览器(Chrome,IE,FF)。我有一个独立的页面,我正在使用它(test.php)创建一个用于测试目的的cookie。
示例代码:
session_start();
setcookie("log_token", "blah", time() + 60*60*24*7);
echo "\n<pre>";
print_r($_COOKIE);
echo "</pre>";
这在IE和FF上正常显示。
Array
(
[PHPSESSID] => 894ati3nr464gbvk41hjco6eu4
[log_token] => blah
)
然而,在谷歌浏览器上我得到了
Array
(
)
我做了一些测试,我发现我在(index.php)中有一些代码会在不满足某个测试时删除我的会话和cookie数据。经过验证和测试,我在(test.php)中将cookie的名称更改为(login_token1),我现在在chrome中看到了这一点:
Array
(
[log_token1] => blah
)
表示会话,并且“log_token”正在(index.php)中的代码中销毁。 为了进一步测试这个,我从(index.php)中删除了该代码,并在chrome中重新测试了“log_token”,并且正确的cookie和会话ID都出现了。
我的问题: 为什么在世界上是来自index.php的php代码被调用,当我直接运行(test.php)..... 这完全没有意义,因为它不会发生在IE或FF中。任何见解都很可爱。
答案 0 :(得分:1)
我遇到了类似的问题。如果您的标记中没有真正的图标设置,谷歌浏览器会对favicon.ico(或类似的东西)提出盲目请求。如果你有一些重定向规则将所有请求路由到index.php(这是最近的常见做法),那么对图标的请求也会通过index.php。这就是我案中问题的原因。