我有我这样设置会话变量:PHP会话变量的变化
<?php
$token = md5(uniqid(rand(), true));
session_start();
$_SESSION['token'] = $token;
print $_SESSION['token'];
?>
然后在另一页上我有这样的:
<?php
session_start();
print $_SESSION['token'];
?>
的问题是,他们没有比赛。我得到两个完全不同的字符串。 register_globals
已关闭。我注意到,当我设置md5(....)
为一个常量字符串,例如:md5('example')
,它按预期工作并且两个字符串匹配。但那不应该。关于这里发生了什么的任何想法?
编辑:Apache的艾策斯日志:
127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /index.php HTTP/1.1" 200 3182 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3"
127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /style/style.css HTTP/1.1" 304 - "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3"
127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /js/signup.js HTTP/1.1" 304 - "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3"
127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /index.php HTTP/1.1" 200 3182 "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3"
127.0.0.1 - - [18/Sep/2010:17:46:10 -0500] "GET /index.php HTTP/1.1" 200 3182 "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3"
我不太知道如何阅读,但在我看来,我的文件(的index.php我以为是“/”)正在叫三次。我读的是对的吗?那里发生了什么?
我无法重现此行为。检查您的访问日志,并提供有关您正在使用的环境的更多详细信息。很明显,提供的代码不是整个系统,您可能在其他地方重置了该令牌。 – 2010-09-18 21:59:00
某些浏览器插件已知会导致发送多个请求而不是一个请求的行为。 – James 2010-09-18 22:28:48
@Josh K我不是......两个页面现在都是静态的。唯一被设置或更改的是令牌,并且只发生在一个地方,如上所示。 – williamg 2010-09-18 22:31:09