参考资料页面按F5刷新,避免表单重复提交的解决方法.docx

参考资料页面按F5刷新,避免表单重复提交的解决方法.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
参考资料页面按F5刷新,避免表单重复提交的解决方法

页面按F5刷新,避免表单重复提交的解决方法避免表单重复提交用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。1.使用客户端脚本提到客户端脚本,经常使用的是JavaScript进行常规输入验证。在下面的例子中,我们使用它处理表单的重复提交问题,请看下面的代码:form method=post name=register action=test.php enctype=multipart/form-datainput name=text type=text id=text /input name=cont value=提交 type=button onClick=document.register.cont.value=正在提交,请等待...;document.register.cont.disabled=true;document.the_form.submit();/form当用户单击“提交”按钮后,该按钮将变为灰色不可用状态,上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已经提交过一次表单,将立即弹出对话框,代码如下:script language=javascript!--varsubmitcount=0;function submitOnce (form){if (submitcount == 0){submitcount++;return true;} else{alert(正在操作,请不要重复提交,谢谢!);return false;}}//--/scriptform name=the_form method=post action= onSubmit=return submitOnce(this)input name=text type=text id=text /input name=cont value=提交 type=submit/form在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。2.使用Cookie处理使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码:?phpif(isset($_POST[go])){setcookie(tempcookie,,time()+30);header(Location:.$_SERVER[PHP_SELF]);exit();}if(isset($_COOKIE[tempcookie])){setcookie(tempcookie,,0);echo 您已经提交过表单;}?如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。关于Cookie的详细介绍,请参阅第10章“PHP会话管理”。3.使用Session处理利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个 Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交,请见如下代码:?phpsession_start();//根据当前SESSION生成随机数$code = mt_rand(0,1000000);$_SESSION[code] = $code;?在页面表单上将随机数作为隐藏值进行传递,代码如下:input type=hidden name=originator value=?=$code?在接收页面的PHP代码如下:?phpsession_start();if(isset($_POST[originator])) {if($_POST[originator] == $_SESSION[code]){// 处理该表单的语句,省略}else{echo ‘请不要刷新本页面或重复提交表单!’;}}?关于Session的内容,我们会在第10章“PHP会话管理”详细讨论,你可以直接查阅这一章,然后再返回本节继续阅读。4.使用header函数转向除了上面的方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。if (isset($_POST[action]) $_POST[action] == submitted) {//处理数据

文档评论(0)

dart003 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档