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

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

一、把一页面分开为两个,数据提交给另一个页面处理,之后再跳到输入页面。
        优点:避免了刷新的影响,并可连续提交数据。
        缺点:当用户在还没有完整的填写表单时,点了提交。若不执行数据入库操作又要保留用户之前输入的内容,用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=提交>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值