重新提交表单数据的问题

时间:2009-10-24 04:06:26

标签: php html

我是一个尝试开发一些登录面板的新手。现在的问题是

我无法在按下浏览器的后退和前进按钮时停止重新提交表单数据。 试图在谷歌上找到它,但没有有效的解决方案出现。

请赐教我。

1 个答案:

答案 0 :(得分:3)

您可能希望实施Post-Redirect-Get方法。

由于您发布了帖子但未重定向,因此可能会因浏览器行为而再次发送POST数据。您需要在POST后重定向才能停止此操作。

下图显示了PRG的流程:

alt text http://upload.wikimedia.org/wikipedia/en/3/3c/PostRedirectGet_DoubleSubmitSolution.png

要执行此操作,请在要发布的页面中,而不是显示结果,而是将用户重定向到另一个结果页面。

e.g。

function redirect($url){
  header('Location: '.$url);
  exit;
}

if(isset($_POST['submit'])){
  $ok = checkLogin($username,$password);
  if($ok){
    redirect('thank-you.php');
  }else{
    redirect('login.php?error');
  }
}