<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>爱周末 &#187; 表单重复提交</title>
	<atom:link href="http://zhoumo123.cn/tag/%e8%a1%a8%e5%8d%95%e9%87%8d%e5%a4%8d%e6%8f%90%e4%ba%a4/feed" rel="self" type="application/rss+xml" />
	<link>http://zhoumo123.cn</link>
	<description>知识分享，共同进步。zhoumo123.cn</description>
	<lastBuildDate>Thu, 07 Nov 2019 05:53:49 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.1</generator>
	<item>
		<title>防止表单重复提交的几种策略</title>
		<link>http://zhoumo123.cn/web/form/30.html</link>
		<comments>http://zhoumo123.cn/web/form/30.html#comments</comments>
		<pubDate>Thu, 22 May 2014 01:48:20 +0000</pubDate>
		<dc:creator><![CDATA[zhangc]]></dc:creator>
				<category><![CDATA[表单]]></category>
		<category><![CDATA[表单重复提交]]></category>

		<guid isPermaLink="false">http://zhoumo123.cn/?p=30</guid>
		<description><![CDATA[表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题，比如： 点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作，导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。 几种防止表单重复提交的方法 禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题，如果客户端把Javascript给禁止掉，这种方法就无效了。 我之前的文章曾说过用一些Jquery插件效果不错。 Post/Redirect/Get模式。在提交后执行页面重定向，这就是所 ...  <a href="http://zhoumo123.cn/web/form/30.html">  阅读全文 </a>]]></description>
				<content:encoded><![CDATA[<p>表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题，比如：</p>
<ul>
<li>点击提交按钮两次。</li>
<li>点击刷新按钮。</li>
<li>使用浏览器后退按钮重复之前的操作，导致重复提交表单。</li>
<li>使用浏览器历史记录重复提交表单。</li>
<li>浏览器重复的HTTP请求。</li>
</ul>
<p><strong>几种防止表单重复提交的方法</strong></p>
<p>禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题，如果客户端把Javascript给禁止掉，这种方法就无效了。</p>
<p>我之前的文章曾说过用一些Jquery插件效果不错。</p>
<p>Post/Redirect/Get模式。在提交后执行页面重定向，这就是所谓的Post-Redirect-Get (PRG)模式。简言之，当用户提交了表单后，你去执行一个客户端的重定向，转到提交成功信息页面。</p>
<p>这能避免用户按F5导致的重复提交，而其也不会出现浏览器表单重复提交的警告，也能消除按浏览器前进和后退按导致的同样问题。</p>
<p>在session中存放一个特殊标志。当表单页面被请求时，生成一个特殊的字符标志串，存在session中，同时放在表单的隐藏域里。接受处理表单数据时，检查标识字串是否存在，并立即从session中删除它，然后正常处理数据。</p>
<p>如果发现表单提交里没有有效的标志串，这说明表单已经被提交过了，忽略这次提交。</p>
<p>这使你的web应用有了更高级的XSRF保护。</p>
<p>在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引，防止出现重复数据。这是最有效的防止重复提交数据的方法。</p>
<p>你是如何克服数据重复提交问题的？你遇到过什么重复提交数据的现实例子吗？</p>
<p>&nbsp;</p>
<p>[译文链接] <a href="http://www.vaikan.com/prevent-duplicate-form-submission/" target="_blank">http://www.vaikan.com/prevent-duplicate-form-submission/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://zhoumo123.cn/web/form/30.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
