【发布时间】:2011-08-05 06:10:17
【问题描述】:
我遇到了一个非常奇怪的问题。
这是我的文件:
<?php
session_start();
echo $_SESSION['token']; // should print previous token
echo "<br/>";
$_SESSION['token'] = md5(uniqid()); // set new token
echo $_SESSION['token']; // new token which should carry through on page load, but doesn't
?>
真的很简单!
第一个 echo 语句应该打印上一页加载时设置的令牌。但是由于一些我无法弄清楚的奇怪原因,它打印了一个完全不同的令牌!
非常感谢任何指点。
【问题讨论】:
-
你有没有偶然指向这个脚本的mod_rewrite规则?
-
cookie 是否正在创建?您配置的 session.save_path 中有文件吗?编辑:您的脚本正在运行,因此请查找配置问题。
-
@DanGrossman - 啊哈!是的,这与重写规则有关(我使用的是 nginx)。当我删除规则并直接访问文件时很好。知道为什么会这样吗?
-
每次您请求网页时,您的浏览器都会再次请求
/favicon.ico...您是否也将该请求映射到此脚本? -
@DanGrossman - 你完全正确。这就是问题所在。对 favicon.ico 的请求被重新写入我的 frame.php,这反过来又触发了一个新令牌。我不认为我会解决这个问题。请发布答案,以便我接受。
标签: php session session-variables