【问题标题】:Why is PHP $_SESSION changing token variable?为什么 PHP $_SESSION 更改令牌变量?
【发布时间】: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


【解决方案1】:

每次您请求网页时,您的浏览器都会再次请求/favicon.ico。如果您也有将这些请求映射到此脚本的重写规则,那将更改您的令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多