php避免form表单重复提交
重复提交我们在PHP中的防止方法许多最常用的就是数据库限制了,当然也有可以直接在客户端进行限制了,具体的来看php重复提交防止示例会有哪些呢?
下面的.情况就会导致表单重复提交:
点击提交按钮两次。
点击刷新按钮。
使用浏览器后退按钮重复之前的操作,导致重复提交表单。
使用浏览器历史记录重复提交表单。
浏览器重复的HTTP请求。
网页被恶意刷新。
下面是几种解决办法:
一:利用js设置按钮点击后变成灰色
<form name=form1 method=”POST” action=”/” target=_blank>
<p>
<input type=”text” name=”T1″ size=”20″>
<input type=”button” value=”提交” onclick=”javascript:{bled=true;it();}”>
</p>
</form>
点击完按钮之后变成灰色就不能点击了,用户需要再次提交表单的话就要刷新页面之后重新填写数据再提交了。
二:利用session
在session中???放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。
如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。
这使你的web应用有了更高级的XSRF保护
加载提交的页面时候,生成一个随机数,
$code = mt_rand(0,1000000);
存储在表单的隐藏输入框中:
< input type=”hidden” name=”code” value=””>
在接收页面的PHP代码如下:
<?php
session_start();
if(isset($_POST[‘code’])) {
if($_POST[‘code’] == $_SESSION[‘code’]){
// 重复提交表单了
}else{
$_SESSION[‘code’] =$_POST[‘code’]; //存储code
}
}?>
三:利用cookies
原理和session差不多,但是cookies一旦用户浏览器禁用cookies,这功能就失效了
if(isset($_POST[‘submit’])){
setcookie(“tempcookie”,””,time()+30);
header(“Location:”.$_SERVER[PHP_SELF]);exit();
}
if(isset($_COOKIE[“tempcookie”])){
setcookie(“tempcookie”,””,0);echo “您已经提交过表单”;
}
四:利用header函数跳转
一旦用户点击提交按钮,处理完数据后跳到其他页面
if (isset($_POST[‘submit’])) {
header(‘location:’);//处理数据后,转向到其他页面
}
五:利用数据库来添加约束
直接在数据库里添加唯一约束或创建唯一索引,一旦发现用户重复提交了,直接抛出警告或者提示,或者只处理第一次提交的数据,这是最直接有效的方法,要求前期的数据库设计和架构要考虑周全.
六:Post/Redirect/Get模式
在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
if (isset($_POST[‘action’]) && $_POST[‘action’] == ‘submitted’) {
//处理数据,如插入数据后,立即转向到其他页面
header(‘location:submits_’);
}
这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。
相關文章
-
PHP提交from表单的方法
无论是身处学校还是步入社会,大家都经常看到作文的身影吧,借助作文人们可以反映客观事物、表达思想感情、传递知识信息。写起作文来就毫无头绪?下面是小编精心整理的我收获了快乐作文,仅供参考,希望能够帮助到大家。我收获 -
如何让php提交form表单
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。下面是小编为大家搜索整理的如何让php提交form表单,希望大家能有所收获,更多精彩内容请及时关注我们应届毕业生考试网 -
php提交form表单处理方法
导语:php提交form表单的2种方法和简单的示例,十分的`实用,以下的是本站小编为大家搜集的php提交form表单实例,希望对你有所帮助。 处理GET请求实现的功能是输入姓名后页面显示Hello XXX 创建html文件:?1234567891011 -
讲解如何让php提交form表单
处理GET请求实现的功能是输入姓名后页面显示“Hello XXX”创建html文件:* Created by PhpStorm.* User: Administrator* Date: 2015/6/30* Time: 15:03*/header("Content-type: text/html; charset=utf-8");if(isset($ -
用PHP提交from表单的处理方法
PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。下面是小编为大家搜索整理的PHP提交from表单的.方法,希望能给大家带来帮助!更多精彩内容请及时关注我们考试网! 处 -
php通过记录IP来防止表单重复提交方法分析
本文实例分析了php通过记录IP来防止表单重复提交方法,供大家参考。具体分析如下,更多消息请关注应届毕业生网! 这个原理比较的简单就是用户第一次提交时我们记录提交用户的IP地址,这样如果用户在固定时间内再次 -
php防止表单重复提交的方法
不埋怨命运的坎坷多舛,去突破,去追求,去创造,将眼下每件简单的事情做到最好、做到极致。无所不能的人实在是一无所能,无所不专的专家实在是一无所专彻底、坚忍、专一是成功的美好品质。下面是小编搜索整理的职场正能量的语 -
解决表单重复提交问题的PHP代码
如果学校不能在课堂中给予学生更多成功的体验,他们就会以既在学校内也在学校外都完全拒绝学习而告终。以下是小编为大家搜索整理的解决表单重复提交问题的PHP代码,希望对大家有所帮助!更多精彩内容请及时关注我们应届毕 -
如何实现php登陆表单提交CSRF及验证码
导语:通过下面教程的学习,大家可以掌握如何实现php登陆表单提交CSRF及验证码,具体详情请阅读以下内容,更多教程请关注应届毕业生考试网。 1、表单提交,并将其提交到本页(1) form 属性method为post方法,修改路由,使其接收p -
如何真正解决表单重复提交问题php代码
过去一切时代的精华尽在书中。以下是小编为大家搜索整理的如何真正解决表单重复提交问题php代码,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!以前用的js表单防止重复提交方法代码如下<script t