提交数据并刷新页面。

3

我有一个编辑表单页面,用于编辑我的网站文章。

它使用相同页面的post方法。

如果表单被正确填写,将显示祝贺消息。

问题:

当用户点击刷新按钮时,脚本会尝试再次将数据重新提交到该页面。

有没有办法避免这种情况发生?

谢谢

Luca

4个回答

9
PRG模式的一般概述如下:
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']);
}

1
你需要使用PRG模式。

1
你应该使用上面提到的PRG模式!为了完整起见,我还添加了使用javascript history.replaceState的可能性,如果你的表单依赖于js(例如noscript应该使表单失效或类似的情况...)。
<script>
  window.history.replaceState({}, '#no-reload');
</script>

0

这被称为Post/Redirect/Get模式。您可以通过响应POST请求并使用302/303重定向来实现此操作,从而防止客户端上的烦人行为。

您可以在我上面发布的链接中了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接