zoukankan      html  css  js  c++  java
  • 如何避免表单重复提交

    客户端方案

    禁掉提交按钮。

    表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。

    使用Post/Redirect/Get模式

    在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
    这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

    使用Cookie处理

    使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。

    服务端方案

    在session中存放一个特殊标志

    在服务器端生成一个唯一的标识符,并将其存入session,同时将之写入表单的隐藏字段中,然后将表单页面发给浏览器。用户录入信息后点击提交。在服务器端,获取表单中隐藏字段的值,与session中的唯一标识符比较,相等说明是首次提交,就处理本次请求,然后将session中的唯一标识符移除;不相等说明是重复提交,就不再处理。这使你的web应用有了更高级的XSRF保护。

    使用header函数转向

    当用户提交表单,服务器端处理后立即转向其他的页面。这样,即使用户使用刷新键,也不会导致表单的重复提交,因为已经转向新的页面,而这个页面脚本已经不理会任何提交的数据了。

    在数据库里添加约束

    在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/amunote/p/10349416.html
Copyright © 2011-2022 走看看