【发布时间】:2013-06-13 14:38:34
【问题描述】:
这是我的代码 http://pastebin.com/DtK8MMtU 当用户按下“下一回合”按钮时,$_POST["turnOver"] 正在设置。然后脚本进入这个部分
if (isset($_POST["turnOver"])) {
$_SESSION["state"] = 0;
unset($_SESSION["rolls"] );
unset($_SESSION["bet"]);
unset($_SESSION["nextTurn"]);
$_SESSION["turnNumber"]++;
unset($_POST["turnOver"]);
}
通过这一行unset($_POST["turnOver"]); 我希望这个块在用户按下“下一回合”按钮后只执行一次,但是每次用户刷新页面时都会执行一次(我通过 $_SESSION["turnNumber"] 值看到了这个,它增加了所有我刷新页面的时间)。另外,这里是来自 xdebug 的 $_POST var_dump:
array (size=1)
'turnOver' => string ''... (length=9)
表示设置好了?
【问题讨论】:
-
你不能那样做。但是,您可以检查
$_SESSION["state"]是否不为 0,如果已经存在,则不要执行。当您 UNSET 时,它仅用于 PHP 脚本的其余执行。这意味着如果您在那之后尝试访问$_POST["turnOver"],那么它会在您从数组中删除它时失败,但它会在每次刷新时重新提交。 -
您可以在每个合法帖子中包含一个随机数。将该数字存储在会话变量中。检查给定的数字是否与存储的数字不同。如果相同,则为浏览器刷新。