PHP技巧:何避免页面刷新数据重复写入数据库
来源:互联网 发布:java &符号的转义字符 编辑:程序博客网 时间:2024/06/08 22:13
何避免页面刷新数据重复写入数据库
当表单的数据是提交给本页面处理并写入数据库时,点提交后,刷新页面的话使数据重复写入数据库。网上搜索一下,发现了不少的解决方案:
一、把一页面分开为两个,数据提交给另一个页面处理,之后再跳到输入页面。
优点:避免了刷新的影响,并可连续提交数据。
缺点:当用户在还没有完整的填写表单时,点了提交。若不执行数据入库操作又要保留用户之前输入的内容,用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来实现有些困难或说不方便。(当然,用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 str_replace技巧-避免重复替换
- 怎样避免(F5)刷新页面造成的重复提交
- 页面按F5刷新,避免表单重复提交的解决方法
- php 防止页面刷新重复提交
- php防止刷新页面重复提交
- 数据库重复写入数据问题处理
- jsp页面防刷新,提交数据重复
- 防止页面刷新后插入重复数据
- 网页刷新的问题。避免数据重复提交。
- 如何避免因jsp刷新而重复提交数据
- PHP超简易页面数据写入excel
- liferay 中避免 反复刷新页面 反复插入数据库
- 避免F5刷新重复提交
- Android入门第十一篇之TabHost,TabWidget
- 什么是Cocoa 什么是Xcode 什么是Framework?
- 网络邮箱中Base64编码问题
- 三网融合触发MeeGo风暴
- 面向服务(SO)和面向对象(OO)的比较
- PHP技巧:何避免页面刷新数据重复写入数据库
- PHP技巧:_SERVER的详细参数与说明
- memcached session
- ISO 8859-1 Characters as Named and Numeric HTML Entities
- 关于logic:iterate与的合用
- 死里逃生
- 已丢弃程序包 的当前状态(未执行,package body "*.DBMS_RANDOM" 不存在)
- Builder(生成器)
- linux nfs文件共享