<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="简单的PHP防止post重复提交数据的示例代码" id="card1">
<p> 游客</p><p>
标题:简单的PHP防止post重复提交数据的示例代码<br/>
正文:<br/>
在某帝国面试的时候问题了这个题: 怎么处理post提交重复的问题, 后来跟@暖阳交流,他说记录时间,我没有明白,我想的是用session在表单页面记录下,然后提交页面判断,如果相等则视为成功,并清空session,但有个问题是如果表单页面是html的呢,乍办?要不调个php验证的页面?类似验证码的功能. 还有的说用 header头设置过期时间...但没试.以下是我php写的,经测试可用.代码如下:&amp;lt;?php<br/>//开启session<br/>session_start();<br/>//如果有提交标识<br/>if(isset($_GET['action']) &amp;amp;&amp;amp; $_GET['action'] === 'save'){<br/> //如果有session且跟传过来的值一样才算提交<br/> if(isset($_SESSION['__open_auth']) &amp;amp;&amp;amp; isset($_POST['auth']) &amp;amp;&amp;amp; $_SESSION['__open_auth'] == $_POST['auth']){<br/>  print_r($_POST);<br/>  $_SESSION['__open_auth'] = null;//清空@camnpr<br/> } else {<br/>  //走起<br/>  header(&quot;location: post.php&quot;);<br/> }<br/> exit();<br/>}<br/>//授权<br/>$auth = $_SESSION['__open_auth'] = time();<br/>?&amp;gt;<br/>&amp;lt;!doctype html&amp;gt;<br/>&amp;lt;html&amp;gt;<br/>&amp;lt;head&amp;gt;<br/> &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;<br/> &amp;lt;title&amp;gt;post&amp;lt;/title&amp;gt;<br/>&amp;lt;/head&amp;gt;<br/>&amp;lt;body&amp;gt;<br/> &amp;lt;form action=&quot;post.php?action=<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1674&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1674&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1674&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1674&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1674">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1674">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>