发布数据和刷新页面

时间:2011-03-25 01:00:49

标签: php html http-post

我有一个编辑表单页面来编辑我的网站帖子。 它使用post方法到同一页面。 如果表格编译正确,则会显示恭喜信息。

问题:

当用户点击刷新按钮时,脚本会尝试再次将数据重新发布到页面。 有没有办法避免这种情况?

谢谢

卢卡

4 个答案:

答案 0 :(得分:8)

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 :(得分:1)

您需要使用PRG模式。

答案 2 :(得分:0)

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

您可以在我上面发布的链接中详细了解这一点。

答案 3 :(得分:0)

您应该使用上面已经提到的PRG模式! 为了完整起见,如果您的表单依赖于js(例如,noscript应该使表单或类似的东西无效),我添加了使用javascript history.replaceState的可能性。

<script>
  window.history.replaceState({}, '#no-reload');
</script>