十分钟内学会 避免用户刷新导致重复POST提交_相关技巧

Question
在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了POST提交目标页,之后他通过链接导航到别处了,再退回到POST提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复POST提交的场景,浏览器就会问用户是否确认重做此操作,用户并不一定能正确理解重做意味着重做什么,浏览器又不允许网站向用户解释清楚,所以这属于非常不友善的设计。那么我们应该如何避免用户刷新带来的重复提交呢?

Answer
有一种最简单的模式能够解决这个问题,叫做PRG,也就是Post-Redirect-Get。在用户提交信息后,我们不要在POST提交的目标URL返回结果页面,而返回一个302将浏览器重定向到真正的结果显示页,然后浏览器通过GET去获取那个页面。

这样做的话,用户刷新结果页,或者通过历史记录回到该页面,都不会导致浏览器要重新进行POST,自然也就不会出现烦人的是否重做对话框了。而对于你来说,也有效避免了用户重复提交信息的可能性。

时间: 2024-10-26 18:51:34

十分钟内学会 避免用户刷新导致重复POST提交_相关技巧的相关文章

用户权限管理设计[图文说明]_相关技巧

最近在一个项目中设计的一个用户权限的设计,很乐意与大家一起讨论及分享. 设计思路 我的设计思路或者说是我想要实现的功能 1.用户的权限通过角色来控制,一个用户可以拥有多个角色. 2.用户拥有不同角色时,其权限应该是多个角色相互的补集. 3.一个角色拥有多个模块 4.用户的前台菜单显示根据角色所拥有的模块所决定,不同的用户在前端显示的操作菜单是不一样的. 5.页面中的功能按钮根据模块中所包含的功能所定义,通过模块及角色所拥有的权限进行控制 6.可看某个模块有哪些用户,哪些对应角色,并对其进行特殊权

香港WiFi无线网存漏洞 近5成十分钟内可破解

2月24日消息,据香港媒体报道,在香港地区超过三万个WiFi无线网络热点中,有近5成可以在十分钟内破解. WiFi全称Wireless Fidelity,属于在办公室和家庭中使用的短距离无线技术,是目前无线接入的主流标准之一. 该媒体表示,香港无线科技商会和专业信息保安协会携手进行侦测WiFi网络,采集样本超三万个.侦测结果表明,约两成完全无加密,有四成七采用不安全的WEP加密方式,可于十分钟内被黑客破解,只有约三成一采用较安全WPA制式. 上述机构呼吁,市民应该在计算机自行设定较安全的加密方式

足球数据 | 被对手进球后的十分钟内最有可能扳回比分

◆ ◆ ◆ 有人说,当一支足球队刚进球了以后,他们会突然变得比之前更容易被对方进球,这种说法是可靠的吗? 上周,我们就进球是不是更倾向于成对出现进行了研究,具体做法是比较在前一个进球之后10分钟以内的进球数量与同一个联赛所有比赛中的相同10分钟时段的进球数量. 我们还将每支队伍的实力差别,和主客场因素考虑了进来,以站在脱离特定球队的基础上更精确地计算进球数的期望值.此项研究将会提出这样一种可能性,如果先回答一个问题:进球方或失球方是否会更容易被对方进球,我们就可以据此预测出某些场次的比赛更可能出

ASP.NET Session会导致的性能问题_实用技巧

而且还是阵发性的,有某个用户投诉慢的时候,你访问却很快,本地又复现不出来?今天你访问了博客园真是太幸运了,也许这里就有你想要的一个答案--假如你的站点动态处理了图片或者其他原本不会动态处理的非网页资源的话.没想到吧,这是Session惹的祸! 我们公司某个站点访问量一直很大,几年前就已经发现客户经常投诉说很慢,而这个问题我们一直都在排查和解决.从线路问题,到数据库连接泄露,到数据库死锁.索引,以及程序的优化问题,我们都查找过,并且解决过.然而,这个问题总还是存在.比如说,在IIS日志中,就会经常

如何在十天内学会php之第十天

学习目的:学会用PHP上传文件和发邮件 上传文件表单必须加上 enctype="multipart/form-data" 和 <input type="file" name="file"> 下面看一下代码: $f=&$HTTP_POST_FILES['file']; $dest_dir='uploads';//设定上传目录 $dest=$dest_dir.'/'.date("ymd")."_&qu

如何在十天内学会php之第七天

学习目的:学会SESSION的使用 SESSION的作用很多,最多用的就是站点内页面间变量传递.在页面开始我们要session_start();开启SESSION: 然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧.这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true

如何在十天内学会php之第一天

以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了. PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合.我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序.当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少. 至于表单设计什么的,我这里也不想多说了,在<十天学会ASP>中已经有介绍. 下面简单介绍一下PHP的语法. 1.嵌入方法: 类似A

在X分钟内学会C#的入门简明教程_java

复制代码 代码如下: // 单行注释以 // 开始/*多行注释是这样的*//// <summary>/// XML文档注释/// </summary> // 声明应用用到的命名空间using System;using System.Collections.Generic;using System.Data.Entity;using System.Dynamic;using System.Linq;using System.Linq.Expressions;using System.

如何在十天内学会php之第六天

学习目的:学会添加删除修改数据 mysql_query($exec); 单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")"; 删除:$exec="delete from tablename where..."; 修改