Post data and refresh page

只愿长相守 提交于 2020-01-10 09:23:23

问题


I have an edit-form page to edit my website posts. It uses post method to the same page. If the form is compiled correctly shows up a congrats message.

The problem:

When users hit the refresh button the script tries to repost the data again to page. Is there a way to avoid this?

thanks

Luca


回答1:


The general outline of the PRG pattern is this:

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']);
}



回答2:


You need to use the PRG pattern.




回答3:


This is called the Post/Redirect/Get pattern. You do this by responding to a POST request with a 302/303 Redirect, which prevents that troublesome behavior on the client.

You can read more about this in the link I posted above.




回答4:


You should use the PRG pattern already mentioned above! Just for completeness I add the possibility of using javascript history.replaceState if your forms depend on js (e.g. noscript should invalidate the form or something similar...).

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


来源:https://stackoverflow.com/questions/5427428/post-data-and-refresh-page

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!