zoukankan      html  css  js  c++  java
  • 防止重复提交表单的两种方法

    1.通过表单隐藏域中存放session
    表单隐藏域中存放session(表单被请求时生成的标记)。采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交。方法如下:
     
    //服务端生成随机数存入session, 分配至表单页
    $data['sess_id'] = $_SESSION['sid'] = mt_rand(1000, 9999);
    $this->load->view('form', $data);
     
    //表单页隐藏域存放此session值
    <input type="hidden" name="sid" value="<?=$sess_id; ?>">
     
    //处理
    if($_POST['sid'] != '' && $_POST['sid'] == $_SESSION['sid'])
    {
     unset($_SESSION['sid']);
     
     echo '处理数据';
    }
    else
    {
     echo '已提交过表单';
    }
     
    2.通过js点击事件处理按钮
    当用户单击“提交”按钮后,该按钮将变为灰色不可用状态
    上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。
    还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已经提交过一次表单,将立即弹出对话框,代码如下:
    <script language="javascript">
    var submitcount=0;
    function submitOnce (form){
    if (submitcount == 0){
    submitcount++;
    return true;
    } else{
    alert("正在操作,请不要重复提交,谢谢!");
    return false;
    }
    }
    </script>
    <form name="the_form" method="post" action="" onSubmit="return submitOnce(this)">
    <input name="text" type="text" id="text" />
    <input name="cont" value="提交" type="submit">
    </form>
    在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读!

  • 相关阅读:
    logstash入门
    Gray Code LeetCode 89
    Longest Valid Parentheses Leetcode 32 一种奇特的解法
    写一个播放视频文件的ActiveX控件——MFC版(原创)
    一种用于网络播放的ActiveX控件
    《COM原理与应用》学习笔记——一个简单的COM组件的实现
    《COM原理与应用》学习笔记——COM的实现
    《COM原理与应用》题外话——C++虚函数表和delete this
    《COM原理与应用》学习笔记二——COM对象和COM接口的实现
    《COM原理与应用》学习笔记一
  • 原文地址:https://www.cnblogs.com/GreenForestQuan/p/6069773.html
Copyright © 2011-2022 走看看