脚本宝典收集整理的这篇文章主要介绍了php – 单击“返回”按钮后阻止重新提交表单,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$query = "INSERT INTO traceuser (username) VALUES ('{$username}')"; $result = MysqL_query($query,$connection); echo '<script language="javascript">window.location="page2.PHP";</script>';
使page2.PHP
– MysqL从数据库中检索数据并显示在此页面上.
问题:当我按“返回”按钮时,浏览器会弹出一条警告消息,表示该表格将重新提交.单击“返回”按钮时如何防止重新提交表单?是否需要清除page1.PHP的缓存?如何用PHP或javascript或ajax做到这一点?
更新1:感谢您将javascript window.location =“page2.PHP”替换为PHP header(‘Location:home2.PHP’);的答案.它解决了80%的问题.剩下的20%问题如下所示:
if (strtotime($_SESSION['servertime']) < time()-3){ //10800 = 3 hours 3600 = 1 hour if (($username != "") AND ($username != $_SESSION[username])){ $_SESSION['servertime'] = $servertime; $_SESSION['username'] = $username; $query = "INSERT INTO traceuser (username) VALUES ('{$username}')"; $result = MysqL_query($query20,$connection); header('Location: page2.PHP'); exIT; } else { echo "same name"; //PRoblem here } }else{ echo "submit multiple data too fast"; //problem here too. } }
执行以下步骤时会发生此问题:
1)用户成功提交数据,跳转到page2.PHP查看记录.
2)用户点击“返回”按钮,跳回page1.PHP.
3)用户提交数据失败,留在Page1.PHP. (因为太快或同名)
4)用户提交数据成功,跳转到page2.PHP查看记录.
5)用户点击“返回”按钮,但浏览器显示警告信息“表格将被重新提交”.
问题是由于步骤3.步骤3没有运行标题(‘Location:page2.PHP’);,没有跳转到page2.PHP.因此它会导致步骤5显示警告消息.如何解决这个问题?
更新2:我已经找到了解决20%问题的解决方案,它运行得很好.我使用session [‘error123’]来决定是否要显示错误消息“同名”.如果成功将数据提交到数据库或成功跳转到page2.PHP,我会终止会话[‘error123’].我也使用标题(‘Location:page1.PHP’);重定向到自己的页面(同一页面),使页面忘记以前的表单提交.代码示例:
if ($_SESSION['error123'] == "toofast"){ echo $_SESSION['error123'] ; }elseif ($_SESSION['error123'] == "samename"){ echo $_SESSION['error123'] ; } if (strtotime($_SESSION['servertime']) < time()-3){ //10800 = 3 hours 3600 = 1 hour if (($username != "") AND ($username != $_SESSION['username'])){ $_SESSION['username'] = $username; $query = "INSERT INTO traceuser (username) VALUES ('{$username}')"; $result = MysqL_query($query20,$connection); $_SESSION['error123'] = "aa"; header('Location: http://localhost/plekz/page2.PHP'); exit; } else { $_SESSION['error123'] = "samename"; header('Location: http://localhost/plekz/page1.PHP'); exit; } }else{ $_SESSION['error123'] = "toofast"; header('Location: http://localhost/plekz/page1.PHP'); exit; } } }
注意:您需要通过<?PHP ob_start();?>缓冲输出?因为$_SESSION不能放在header()之前. Buffer将停止所有输出,包括session,让header()先发送输出.
以上是脚本宝典为你收集整理的php – 单击“返回”按钮后阻止重新提交表单全部内容,希望文章能够帮你解决php – 单击“返回”按钮后阻止重新提交表单所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。