User-Profile-Image
hankin
  • 5
  • 首页
  • Dedecms
  • Notes
  • php
  • Tools
  • Music
  • 分类
    • Tools
    • php
    • Notes
    • Music
    • Dedecms
  • 页面
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
  • 首页
  • Dedecms
  • Notes
  • php
  • Tools
  • Music
    首页   ›   php   ›   正文
php

避免页面刷新数据重复写入数据库

2014-01-02 13:28:33
3298  0 0

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

1
SESSION['submit']=false

提交后改为true检测变量

1
2
3
if(_SESSION['submit']=true){
echo "text";exit();
}

优点:避免了刷新的影响,并且只有一个页面,没有第一种方法的缺点
缺点:只能提交一次,不能连续提交数据。
*有可取之处,但适用面太窄。
三、在数据入库之前执行一次验证查询,看数据库里是否已经存在了相同的记录,由此来决定是否写入数据。
优点:没有了前两种方法的缺点。
缺点:代码不精简,操作繁琐。再说有时并不排斥保存完全相同的信息。
*实现代价太高,副作用过大。
有没有没整合三种方法优点不要其缺点的方法呢?有!下面就是一种不错的解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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 >
<input type="hidden" name=h value=<?php echo _SESSION['h']+1;?>>
c:<input type="text" name=c >
d:<input type="text" name=d >
<input type="submit" value=提交>

评论 (0)

点击这里取消回复。

欢迎您 游客  

Archives
  • 2019年4月
  • 2018年10月
  • 2018年5月
  • 2018年2月
  • 2016年7月
  • 2015年12月
  • 2014年9月
  • 2014年3月
  • 2014年1月
  • 2013年12月
  • 2013年11月
Categories
  • Dedecms
  • Music
  • Notes
  • php
  • Tools
标签
Dedecms Dedecms短信 Dedecms自定义表单 dedecms自定义表单必填字段 dede_fieldshash showmsg sitemap 织梦 网站地图 自定义表单短信
其他操作
  • 登录
  • 条目feed
  • 评论feed
  • WordPress.org
Copyright © 2025
smarty_hankin 主题. Designed by hankin
主页
页面
博主
Alvin 管理员
14 文章 0 评论 57391 浏览
测试
测试