页面刷新重复提交

转自:http://www.lai18.com/content/9827430.html

一个很老的话题了,在提交了一个form的数据后,怎样才能防止用户直接刷新提示界面来重复提交数据呢,大至上有两个很简单的方式达到目的。

方法一、form提交处理完后用Response.Redirect跳转一下页面,使得用户无法直接刷新到form提交后的页面,这种方式麻烦就是,你想保持提交前的页面状态的话,要作需要数据接替操作,作起来相当麻烦,我用这个方法时一向都是强制丢起所有页面状态,无奈,人懒没药医。

方法二、将form的所有数据加起来然后Md5一下,存在session里,下次收到数据在处理前也将所有相同的数据加起来Md5一下,对比session里的数据,如果一样就表示是重复提交,拒绝操作。防止用户手动把两次form值都填一下而无法提交,可以加一个当前时间的hidden来判定一下,是手动提交还是刷新提交就完美了。

以前一直在用方法一,导致页面状态,要不很麻烦的处理要不懒得处理导致很简单的界面用户操作起来相当繁琐。要不就是让用户随便刷新重提。最新一直在作着银行支付接口一直在搞密匙,作到这种界面时,突然想到,银行支付接口靠md5保证数据的完整性及安全性,为啥不能用md5来验证一下提交过来的form数据是否与上一次的相同呢?还能节省session占的内存数,然后方法二就诞生了。并发个blog记录一下,防止什么时候脑子一短路又把这方法给忘了,又回到页面状态保持困难的地狱里去。

原文地址:https://www.cnblogs.com/hhls/p/5896156.html