我有一些从表单传递的信息,需要使用一次且仅一次。我可以很好地从$_POST中收集它,但我不确定哪是"最好"的方式来确保我只能使用它一次,即我想避免用户重复按F5并多次访问该函数。
我最初的想法是设置一个会话变量,并将函数超时一段时间。这样做的问题是,在设置的周期过后,它们可以再次访问该函数。
欢迎更好的想法!
重定向到另一个页面将足以打破大多数浏览器的重新刷新行为。在表单提交上设置cookie(或者根据您的建议设置会话变量)也可以很好地工作。您可以让表单提交页面再次取消会话变量的设置,这样只有对表单的新访问才允许重新提交表单。
这个很容易实现。
你所需要做的就是:
将您的表单提交到另一个页面,该页面将只处理帖子信息,而不显示任何内容
然后,发送一个LOCATION头来将浏览器重定向到一个新页面(该页面将被GET检索)。这将打破浏览器的重新刷新行为
你可以重定向到其他页面,比如
<>之前标题("位置:index . php");如何:
1)用表单创建一个页面,例如myformpage.php
2)使表单的动作myformpage_submit.php
3)在myformpage_submit.php做任何你需要做的与发布的信息,如插入到数据库。
4)完成后,将浏览器引导到另一个页面,例如:nice .php为避免用户刷新页面访问信息,您可以像这样使用token方法:
<?php
if ( isset($_POST['submit'], $_POST['token']) && ($_POST['token'] === $_SESSION['token']) )
{
// do something here
}
$_SESSION['token'] = uniqid();
?>
对于
<form method="POST">
<input type="hidden" name="token" value="<?= $_SESSION['token'] ?>">
<button name="submit" class="btn btn-success">Submit</button>
</form>