如何避免页面刷新数据重复写入数据库_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解析PHP汉字验证码的实现
?php /* * 文件:chinesechar.php * 作用:汉字数据储存 * 作者:PHP实战群:33918040 - 鱼尾唯一 * 网址:http://bbs.ailf.cn/ http://www.fishwei.com/ * 特注:版权所有转载注明出处!有付出才会有收获! */ ChineseChar = array(人,出,来,友,学,孝,

如何避免页面刷新数据重复写入数据库
当表单的数据是提交给本页面处理并写入数据库时,点提交后,刷新页面的话使数据重复写入数据库。网上搜索一下,发现了不少的解决方案:

一、把一页面分开为两个,数据提交给另一个页面处理,之后再跳到输入页面。
优点:避免了刷新的影响,并可连续提交数据。
缺点:当用户在还没有完整的填写表单时,点了提交。若不执行数据入库操作又要保留用户之前输入的内容,用php来实现有些困难或说不方便。(当然,用js实现可能比较容易。在此约定本文只是从php的角度评价,研究php的运用)
*总的说来,这是一种不错的解决方案。

二、在session中保存变量
_SESSION['submit']=false
提交后 改为true
检测变量
if (_SESSION['submit']=true){
echo "text";
exit();
}

优点:避免了刷新的影响,并且只有一个页面,没有第一种方法的缺点
缺点:只能提交一次,不能连续提交数据。

*有可取之处,但适用面太窄。


三、在数据入库之前执行一次验证查询,看数据库里是否已经存在了相同的记录,由此来决定是否写入数据。

优点:没有了前两种方法的缺点。
缺点:代码不精简,操作繁琐。再说有时并不排斥保存完全相同的信息。

*实现代价太高,副作用过大。


有没有没整合三种方法优点不要其缺点的方法呢?有!下面就是一种不错的解决方案,与大家分享:

///////////////////////////////////////////////////////
<?php
session_start();
if(!isset(_SESSION['h'])){
_SESSION['h']=1;
}
_SESSION['h']++;

if(isset(_POST['h']) and _SESSION['h']==_POST['h']){
echo '<font color=green >您点提交按钮了</font>';
}else{
echo '<font color=red>您没有点提交</font>';
}

?>

<form action="im.php" method=post>
b:<input type="text" name=b ><P>
<input type="hidden" name=h value=<?php echo _SESSION['h']+1;?>>
c:<input type="text" name=c ><P>
d:<input type="text" name=d ><P>
<input type="submit" value=提交>

 

分享:php 截取中文
?php ?php //截取中文字符串 function mysubstr(str, start, len) { tmpstr = ; strlen = start + len; for(i = 0; i strlen; i++) { if(ord(substr(str, i, 1)) 0xa0) { tmpstr .= substr(str, i, 2); i++; } else tmpstr .= substr(str, i, 1); } return

来源:模板无忧//所属分类:PHP教程/更新时间:2010-04-13
相关PHP教程