2010-04-08 31 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