我试图通过添加令牌隐藏字段来阻止用户双重提交论坛.
所以这就是我到目前为止所做的事情(在论坛加载之前我有这个代码来创建一个以当前时间为值的令牌.
$token = time();
setcookie('formToken', $token, time() + 3600);
Run Code Online (Sandbox Code Playgroud)
在我的论坛中,我有一个像这样的隐藏输入
<form method="post" action="'.$PHP_SELF.'?action=update">
<input type="hidden" name="token" value="'.$token.'" />
<input type="submit" value="go" />
</form>
Run Code Online (Sandbox Code Playgroud)
现在在我的页面顶部$ action =="update"我有这个代码
if(isset($_POST) && ($_POST['token'] != $_COOKIE['formToken'])){
$error_list .= '<li>You can not submit this forum twise.</li>';
}
Run Code Online (Sandbox Code Playgroud)
如果我点击F5刷新页面,它再次提交表单而不显示我的错误.
gd1*_*gd1 10
我强烈建议你避免你的系统:它没有经过深度测试,你会浪费时间调试它,它不会避免臭名昭着的"再次发送POSTDATA?" 浏览器的确认对话框,这让用户感到困惑.
我建议你使用PRG模式(Post/Redirect/Get),这也是由论坛实现的phpbb.
Post/Redirect/Get(PRG)是一种Web开发设计模式,可以防止一些重复的表单提交,为用户代理(用户)创建更直观的界面.PRG以可预测的方式实现书签和刷新按钮,不会创建重复的表单提交.

你的问题已经解决了,解决方案就在这里,只需要采取它 - 滚动你自己似乎是一个解决方案只会浪费你的时间.:)