Php防止重复提交问题总结

用户表单提交时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,解决方式从客户端和服务端解决此问题,设法避免同一表单的重复提交。

方案一:

      使用客户端脚本

      <form method="post" name="register" action="test.php" >

       ....................

     <input name="cont" value="提交" type="button" οnclick="document.register.cont.value='正在提交 ,请等待...';document.cont.disabled=true;document.the_form.submit();">

      </form>

当用户点击提交时,按钮变成灰色不可用状态

另一种实现方案

<script>

var submitcount = 0;

function submitOnce(from)

{

     if(submitcount == 0)

     {

         submitcount++;

         return false;

     }

     else

      {

             alert("正在操作,请不要重复提交");

             return false;

      }

}

</script>

<form ...... onSubmit="return submitOnce(this);".....>


方案二:

使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单

<?php

if(isset($_POST['go']) &&!isset($_COOKIE['.....']))

{

     setcookie("tempcookie",'',time()+30);

     header("Location:".$_SERVER[PHP_SELF]);

     exit;

}

if(isset($_COOKIE['.....']))

{

    setcookie('....','',0);

    echo "你已经提交过表单"

}

?>


方案三:

使用session处理

<?php

session_start();

$code = mt_mand(0,1000000);

$_SESSION['code'] = $code;

?>

将$code放到页面的隐藏域里同

<input type="hidden" name="flag" value="<?php $code;?>"/>

接收页面进行判断

<?php

session_start();

if(isset($_POST['flag']))

{

    if($_POST['flag'] == $_SESSION['code'])

    {

        //处理表单问题

    }

     else

     {

        echo "请不要刷新本页面或重复提交表单";

      }

}

?>


方案四

使用header函数跳转

<?php

if(......)

{

     header('location:submit_success.php');

}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值