如何防止页面刷新时重新提交表单(F5/CTRL+R)

如何防止页面刷新时重新提交表单(F5/CTRL+R)

我有一个简单的表单,它将文本提交到我的SQL表中。问题是,在用户提交文本之后,他们可以刷新页面,数据可以再次提交,而无需再次填写表单。在提交文本之后,我可以将用户重定向到另一个页面,但我希望用户保持在同一个页面上。

我记得我读过一些关于给每个用户一个唯一的会话id,并将它与另一个解决了问题的值进行比较的东西,但是我忘记了它在哪里。


qq_笑_17
浏览 2620回答 3
3回答

POPMUISE

您确实应该使用POST重定向GET模式来处理这个问题,但是如果您以某种方式结束了PRG不可行的位置(例如,表单本身是包含的,防止重定向),您可以散列一些请求参数,以便根据内容生成一个字符串,然后检查您还没有发送它。//create digest of the form submission:     $messageIdent = md5($_POST['name'] . $_POST['email'] . $_POST['phone'] . $_POST['comment']);//and check it against the stored value:     $sessionMessageIdent = isset($_SESSION['messageIdent'])?$_SESSION['messageIdent']:'';     if($messageIdent!=$sessionMessageIdent){//if its different:                   //save the session var:             $_SESSION['messageIdent'] = $messageIdent;         //and...             do_your_thang();     } else {         //you've sent this already!     }
打开App,查看更多内容
随时随地看视频慕课网APP