2010-04-08 32 views
0

因此,表单在我的网站上提交,表单操作与自身相同。在发布虚拟变量之后刷新页面

我希望用户能够刷新页面而无需再次发送相同的变量。

我以为未设置($ _ POST);会因为某种原因达到这个目的,那么有没有另外一种方法来实现这个目标呢?

回答

4

不,未设置($ _ POST)不会'帮助你。当这个数组从浏览器请求中填充时。

通常的做法(和协议要求)是使用HTTP重定向到一些(通常是相同的)位置。 在同一个文件中的POST表单处理程序的一个粗略的轮廓是这样的:

if ($_SERVER['REQUEST_METHOD']=='POST') { 
    //write data 
    Header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
    } 
} 
+0

o好吧我看到我可以使用这个,谢谢上校Shrapnel! – 2010-04-08 20:19:10

+0

我明显不能接受7分钟,但我会再次感谢时 – 2010-04-08 20:19:44

1

POST请求响应时,您可能需要通过向GET请求发出server-side redirect来解决此问题。这将防止用户刷新页面并意外地重新发送POST请求。

+0

感谢您的意见丹尼尔,那么你的意思是像有form.php的和form_posted.php? – 2010-04-08 20:17:18

+0

使用标题功能来执行此重定向。 – webbiedave 2010-04-08 20:18:44

+1

@Pete:是的。这是实现典型'thank_you'页面的流行方法。将用户重定向到由'GET'请求生成的'thank_you'页面,而不是从'POST'请求​​返回的页面,这被认为是很好的做法。 – 2010-04-08 20:20:21