Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/17 7:36:01 PHP技巧:何避免页面刷新数据重复写入数据库_[PHP教程]
何避免页面刷新数据重复写入数据库 当表单的数据是提交给本页面处理并写入数据库时,点提交后,刷新页面的话使数据重复写入数据库。网上搜索一下,发现了不少的解决方案:
一、把一页面分开为两个,数据提交给另一个页面处理,之后再跳到输入页面。 优点:避免了刷新的影响,并可连续提交数据。 缺点:当用户在还没有完整的填写表单时,点了提交。若不执行数据入库操作又要保留用户之前输入的内容,用php来实现有些困难或说不方便。(当然,用js实现可能比较容易。在此约定本文只是从php的角度评价,研究php的运用) *总的说来,这是一种不错的解决方案。 二、在session中保存变量 _SESSION['submit']=false 提交后 改为true 检测变量 if (_SESSION['submit']=true){ echo "text"; exit(); } 优点:避免了刷新的影响,并且只有一个页面,没有第一种方法的缺点 缺点:只能提交一次,不能连续提交数据。 *有可取之处,但适用面太窄。 三、在数据入库之前执行一次验证查询,看数据库里是否已经存在了相同的记录,由此来决定是否写入数据。 优点:没有了前两种方法的缺点。 缺点:代码不精简,操作繁琐。再说有时并不排斥保存完全相同的信息。 *实现代价太高,副作用过大。 有没有没整合三种方法优点不要其缺点的方法呢?有!下面就是一种不错的解决方案,与大家分享:
///////////////////////////////////////////////////////session_start();if(!isset(_SESSION['h'])){ _SESSION['h']=1;}_SESSION['h']++;
if(isset(_POST['h']) and _SESSION['h']==_POST['h']){ echo '您点提交按钮了';}else{ echo '您没有点提交';}
?>
b:>c:d:
>c:
d:
来源:csdn
赞