我有一个编辑表单页面,用于编辑我的网站文章。
它使用相同页面的post方法。
如果表单被正确填写,将显示祝贺消息。
问题:
当用户点击刷新按钮时,脚本会尝试再次将数据重新提交到该页面。
有没有办法避免这种情况发生?
谢谢
Luca
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
/// do your magic
$_SESSION['error'] = "Thanks for your message!";
// this should be the full URL per spec, but "/yourscript.php" will work
$myurl = ...;
header("Location: $myurl");
header("HTTP/1.1 303 See Other");
die("redirecting");
}
if ( isset($_SESSION['error']) )
{
print "The result of your submission: ".$_SESSION['error'];
unset($_SESSION['error']);
}
<script>
window.history.replaceState({}, '#no-reload');
</script>
这被称为Post/Redirect/Get模式。您可以通过响应POST请求并使用302/303重定向来实现此操作,从而防止客户端上的烦人行为。
您可以在我上面发布的链接中了解更多信息。