
正文
php解决多次提交数据 php防止表单多次提交
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
表单重复填写比较麻烦,有什么方法解决吗?
/**
*
* @authors Benjamin
* @date 2013-11-13 10:16:59
*/
一、常见的重复提交问题
a点击提交按钮两次。
b点击刷新按钮。
c使用浏览器后退按钮重复之前的操作,导致重复提交表单。
d使用浏览器历史记录重复提交表单。
e浏览器重复的HTTP请求。
二、防止表单重复提交的方法
a禁掉提交按钮。表单提交后disabled现在的按钮或者取消该按钮的点击事件或者默认事件。这种方法防止心急的用户多次点击按钮。但有个问题,如果在客户端把Javascript给禁止掉,这种方法就无效了,当然现代的web站点来说,应该很少了。
bPost/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。
c使用cookie处理表单重复提交
PHP中的实现:
复制代码 代码如下:
lt;?php
if(isset($_POST['go'])){
setcookie("tempcookie","",time()+30);
header("Location:".$_SERVER[PHP_SELF]);exit();
} if(isset($_COOKIE["tempcookie"])){
setcookie("tempcookie","",0);echo "您已经提交过表单";
}
?
d在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。这使你的web应用有了更高级的XSRF保护。
e在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。
相关问答
Q1: 求php页面不重复提交和不重复插入数据的解决办法????
?php
session_start();
$id_lucky = $_POST['id_lucky'];
$customer = $_POST['customer'];
$prize = $_POST['prize'];
$hide = $_POST['hidden'];
//var_dump($_SESSION);
if($hide==$_SESSION['conn'])//php解决多次提交数据你这里判断的session是什么时候存入session的
{
$sql=mysql_query("insert into "._DB_PREFIX_."luckdraw (customer,prize) values ('$customer','$prize')");
//php解决多次提交数据你这里没有判断 你应该在这里判断一下mysql_query是否执行成功 执行sql成功 是提交成功 否则是失败 建议你使用var_dump($sql)打印$sql看看$sql是什么数据类型
if($sql){
echo "亲php解决多次提交数据,提交成功php解决多次提交数据了哦";
}else{
echo '失败';
}
}else
{
echo "scriptreturn false;/script";
}
session_destroy();
Q2: PHP 有没有什么办法能使submit提交一次的表单数据使用多次
使用session就可以了,session在整个会话中所有php文件中都能取到相应的值
登录成功后将id保存到session,使用时直接从session中取就好了。
保存session:$_SESSION['uid'] = $uid;
读取session:$uid = $_SESSION['uid'];
使用session需要注意的细节你百度一下就好了
Q3: thinkphp 防止重复提交数据。
亲,你可以加验证码验证啊!~~
第一次产生验证码,然后验证完成后就将验证码更新掉,这样他再提交验证码就错误了,验证码错误就不让他提交,直接转向就好了!~~
验证码是防止重复提交的一个简单的方式,目前还是比较有效的!~~
而且tp生成验证码很简单,验证也很方便的!~~
具体可以参考文档这里:
希望对你有帮助,如果有帮助,记得采纳哟!~~
Q4: PHP 同时提交多条记录
多个提交和一个提交的道理是相同的,只是一些细节上要注意。
提交一个你懂了,我还是提一下,表单是:
form
input type=text name=name
input type=text name=sex
input type=text name=age
input type=text name=address
/form
PHP存数据库的语句是:
$sql="insert into tab(...) values ($_POST[...])";//省略字段和值
那么多个提交的方法一,表单是:
form
input type=text name=name1input type=text name=sex1input type=text name=age1input type=text name=address1
input type=text name=name2input type=text name=sex2input type=text name=age2input type=text name=address2
/form
PHP存数据库语句是:
$sql="insert into tab(...) values ($_POST[...1])";//省略字段和值
mysql_query($sql);
$sql="insert into tab(...) values ($_POST[...2])";//省略字段和值
mysql_query($sql);
上面方法一写的例子是两条,多条的方法相同,技巧就是输出表单使用JS的循环,存盘的PHP代码也可以循环,并且能够判断为空的就不提交,比如表单20条,只填了5条,就只存5条到数据库。
方法二是使用数组,表单:
form
input type=text name=nameinput type=text name=sexinput type=text name=ageinput type=text name=address
input type=text name=nameinput type=text name=sexinput type=text name=ageinput type=text name=address
input type=text name=nameinput type=text name=sexinput type=text name=ageinput type=text name=address
/form
PHP代码是:
for ($i=0;$icount($_POST["name"]);$i++)
if ($_POST["name"][$i]!='')
{
$sql="insert into tab(...) values ($_POST[...][$i])";//省略字段和值
mysql_query($sql);
}
这样表单可以写任意多行,PHP里面是数组,能够自动获取有多少数据。
Q5: php循环提交数据到mysql问题。。完成此问题小弟倾家荡产了
ls正解。数组循环是不是用foreach更简单点php解决多次提交数据?
foreach($shuzu as $value){//从每一个$shuzu中取值$value
$sql="insert into test(aid,typeid,username,shuzu) values('1','2','3','$value')";
mysql_query($sql);
}
不行php解决多次提交数据你就把里面php解决多次提交数据的mysql_query($sql);加个判断看看错在哪里?
mysql_query($sql) or die(mysql_error());
关于php解决多次提交数据和php防止表单多次提交的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






