- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
php防止form重复提交的方法.doc
用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交。
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
当用户单击“提交”按钮后,该按钮将变为灰色不可用状态,如图5-6所示。
上面的例子中使用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
在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。
2.使用Cookie处理使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码:
?php
if(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变量记录表单提交的值,如果不匹配,则认为是用户在重复提交,请见如下代码:
?php
??? session_start();
??? //根据当前SESSION生成随机数
??? $code = mt_rand(0,1000000);
??? $_SESSION[code] = $code;
?
在页面表单上将随机数作为隐藏值进行传递,代码如下:
input type=hidden name=originator value=?=$code?
在接收页面的PHP代码如下:
?php
session_start();
if(isset($_POST[originator])) {
??? if($_POST[originator] == $_SESSION[code]){
??????? // 处理该表单的语句,省略
??? }else{
??????? echo ‘请不要刷新本页面或重复提交表单!’;
??? }
}
?
关于Session的内容,我们会在第10章“PHP会话管理”详细讨论,你可以直接查阅这一章,然后再返回本节继续阅读。
4.使用hea
您可能关注的文档
- kV变电站综合自动化系统的应用分析.doc
- kv变电站综合自动化系统设计.doc
- kV惠汕输电系统内过电压的研究结果和分析.doc
- kv电力系统配电设备的接地网设计.doc
- kV电压等级在配网中应用的优势与实践.doc
- kv电网中性点接地方式分析.docx
- kV真空断路器运行分析.doc
- kV箱式变压器技术规范.doc
- KV线路单相接地故障分析及处理方法初探.doc
- kV输电系统高压并联补偿问题的研究.doc
- 岸基供电系统 第4部分:工频电源.pdf
- 人教版八下英语Unit 5 What were you doing when the rainstorm came_测试卷.docx
- 热带作物品种区域试验技术规程 木薯.pdf
- 草原防火阻隔带建设技术规程.pdf
- 渔用气胀救生筏技术要求和试验方法-.pdf
- 浙江省杭州市2024-2025学年八年级下学期期中考试英语试卷(含答案).docx
- 重庆市渝北区六校联盟2024-2025学年九年级下学期期中教学大练兵语文试卷.docx
- 食品安全-花椒籽油 (2).pdf
- 2025年海博思创分析报告:储能集成“小巨人”,国内外业务进展可期.pdf
- 地理标志产品 宽城板栗.pdf
文档评论(0)