很多的表单都是采用POST进行提交的。这种提交方式实现起来很容易。
而且效率也比较好。
不过在用户刷新页面的时候,可能会造成重复提交的现象,用户刷新的原因一般都是网页响应太慢了,或者浏览器卡死等情况。这样一刷新,网页又会重新提交,结果一个数据提交了两次。
一般这样浏览器都会确认是不是继续这个提交,但是有的同人误点。
或者是根本不知道这个意思,所以造成界面不友好,不符合体验度等问题,那么怎么让网站用户刷新重复不再提交呢?
使用Session防止重复提交
在提交的页面也就是数据库处理之前添加下面的代码:if session("ok")=true then
response.write "错误,正在提交"
response.end
end if
数据处理完后,修改session(“ok”)=false。
这是一个方法之一。
另一个方法
在用户提交信息后,我们不要在POST提交的目标URL返回结果页面,而返回一个302将浏览器重定向到真正的结果显示页,然后浏览器通过GET去获取那个页面。这样之后,用户刷新结果页,或者通过历史记录回到该页面,都不会导致浏览器要重新进行POST,达到了防止用户点刷新按钮时重复提交的问题。
禁止缓存不让后退
如果在操作数据库的时候可以后退,这时刷新了页面,就会再次执行添加操作,怎么办呢?禁止缓存的代码有时并不可靠,这时你只要在操作的页面加上就可以了,在网页的里指定要定向的新页,再点后退,看是不是不会再退到刚才的操作页面了,实际上已经把这个历史给删除了
ASP网站禁止后退:Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
ASP.NET的:Response.Buffer=true;
Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";