• 防止表单重复提交的几种方案


    < DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd>

              重复提交、重复刷新都是来解决系统重复记录的问题。在我们做程序开发的时候经常会遇到用户点了提交以后,由于各种原因用户会在去点提交或是按浏览器的刷新按扭,从而导致数据重复提交。

             我们来了解一下"防止后退"操作的原因是什么?比如你在开发某个投票系统,它有很多的步骤,并且这些步骤之间是有联系的,比如第一步会将某些信息发送给第二步,第二步缓存了这些信息,同时将自身的信息发送给了第三步。。。。。等等,如果此时用户处在第三步骤下,我们想象一下某个淘气用户的用户点击了后退按钮,此时屏幕出现了第二步骤的页面,他再次的修改或者再次的提交,进入到下一个步骤(也就是第三步骤),错误就会在此产生?!什么错误呢?最为典型的就是这样的操作直接导致了对于第一个步骤信息的丢失!
            当然很多的系统(比如订票系统从需求上本身是允许个人重复订票的)是必须要避免重复刷新、重复提交、以及防止后退的问题的,但即使是这样的问题,也要区分如何处理以及在哪里处理的(网上只是告诉你如何处理,但很少去区分在哪里处理的),显然处理的方式无非是客户端或者服务器端两种,而面对不同的位置处理的方式也是不同的,但有一点要事先声明:任何客户端(尤其是B/S端)的处理都是不可信任的,最好的也是最应该的是服务器端的处理方法。
          以下列举了几种防止重复提交的几种解决方案.

    第一种方法:
              在提交以后用页面跳转的方法来重新处理打开当前页,如:Response.Redirect("本页")。也可以达到我们要的目的。

    第二种方法:
             就是采用session或者一个验证票的方式去解决.
    session方式可以参照:http://www.microsoft.com/china/msdn/library/webservices/asp.net/BedrockAspNet.mspx?mfr=true
    其它的在struts中有一个token方式也类似


    其它方案:
           写js设置一个变量,只允许提交一次.但是客户端总是信不过的,最好还是用前面两种方案去解决后退.

  • 相关阅读:
    scrapy爬虫系列之三--爬取图片保存到本地
    scrapy爬虫系列之四--爬取列表和详情
    python3.7.2 ssl版本过低导致pip无法使用的问题
    python3安装后无法使用退格键的问题
    位运算符和unity Layers
    unity常用小知识点
    unity -- Time类(持续更新中)
    随便说说 post-processing
    unity图片后期处理
    顶点/片元 shader 总结
  • 原文地址:https://www.cnblogs.com/netcorner/p/2912131.html
Copyright © 2020-2023  润新知