我已经定义了一个会话来使用PHP存储令牌,如下所示:
$_SESSION['token'] = sha1(uniqid(mt_rand(), true));
当我想要阅读这个会话时,在Chrome或Firefox中没有任何问题。但在IE中,在重新生成之前会变成其他内容。例如,如果我将其值存储在表单的隐藏字段中,并像这样提交:
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
在下一页中,我将在IE上得到这个结果:
echo $_SESSION['token']; // shows 1b05fab5ec11f1d50713aea6e74f84727d29b4a3
echo $_POST['token']; // shows e8fac6d55b04d1752f37ecde953f7f08b112ccca
如果我在创建$_SESSION['token']
之后立即打印它,甚至在创建页面的末尾打印它,它会准确地显示内容,没有任何问题。
这是什么问题?
编辑:
这是我的表格:
<form action="process/login.php" method="post">
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
<label>Email: </label><input type="text" name="email" />
<div class="space"></div>
<label>Password: </label><input type="password" name="password" />
<div class="space"></div>
<input type="submit" value="Login" class="button" />
</form>