解析php防止form重复提交的方法
发布时间:2022-07-22 12:19 所属栏目:121 来源:互联网
导读:本篇文章是对php防止form重复提交的方法进行了详细的分析介绍,需要的朋友参考下 php 防止表单重复提交实例: 复制代码 代码如下: ?php session_start(); $_SESSION[fsess]=($_SESSION[fsess])?$_SESSION[fsess]:time(); ? !DOCTYPE html PUBLIC -//W3C//DTD
本篇文章是对php防止form重复提交的方法进行了详细的分析介绍,需要的朋友参考下 php 防止表单重复提交实例: 复制代码 代码如下: <?php session_start(); $_SESSION['fsess']=($_SESSION['fsess'])?$_SESSION['fsess']:time(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>防止表单重复提交</title> <SCRIPT language=Javascript type=text/javascript> <!-- //*****Javascript防重复提交************ var frm_submit=false; //纪录提交状态 function check_form(fobj) { var error = 0; var error_message = ""; if (fobj.formtext.value=="") { error_message = error_message + "formtext 不能为空./n"; error = 1; } if (frm_submit==true) { error_message = error_message + "这个表单已经提交./n请耐心等待服务器处理你的请求./n/n"; error=1; } if (error == 1) { alert(error_message); return false; } else { frm_submit=true; //改变提交状态 return true; } } --> </script> </head> <body> Javascript和服务器端 双重防止表单重复提交演示 <br/> <br/> 现在时间:<?php echo date("Y-m-d H:i:s"); ?> <br/> <br/> <?php if(@$_POST["faction"]=="submit"||@$_GET["faction"]=="submit"){ //提交处理 //*****服务器端防重复提交******************* //如果POST传来的表单生成时间与SESSION保存的表单生成时间 //相同;为正常提交 //不相同;为重复提交 if($_SESSION["fsess"]==$_POST["fpsess"]){ $_SESSION["fsess"]=time(); echo "提交内容:<br/>/n"; echo $_POST["fpsess"]."<br/>/n";; echo $_POST["formtext"]; echo "</body></html>"; exit; } else { echo "重复提交,退出!!!!<br/>/n"; echo "</body></html>"; exit; } } //$_SESSION["fsess"]=time(); ?> <form name="f_info" action="" method="post" onSubmit="return check_form(this);"> <input name="fpsess" type="hidden" value="<?php echo $_SESSION["fsess"]; ?>" /> <!-- 保存表单生成时间 --> <input name="faction" type="hidden" value="submit" /> <input name="formtext" id="formtext" type="text" value="" /> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </form> </body> </html> ************************************************************* 上面是完整例题,下面是在网站摘抄,仅供参考 ************************************************************* 用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。 1.使用客户端脚本 提到客户端脚本,经常使用的是JavaScript进行常规输入验证。在下面的例子中,我们使用它处理表单的重复提交问题,请看下面的代码: <form method="post" name="register" action="test.php" enctype="multipart/form-data"> <input 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"> <!-- var submitcount=0; function submitOnce (form){ if (submitcount == 0){ submitcount++; return true; } else{ alert("正在操作,请不要重复提交,谢谢!"); return false; } } //--> </script> <form name="the_form" method="post" action="" onSubmit="return submitOnce(this)"> <input name="text" type="text" id="text" /> <input name="cont" value="提交" type="submit"> </form>。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读