2010-12-12 75 views

回答

6

爲了解決這個問題,存在Post/Redirect/Get pattern需要遵循:)

郵政/重定向/獲取(PRG)是Web開發人員共同 設計模式 幫助避免某些重複的形式提交 並允許用戶代理 更直觀地使用書籤 和刷新按鈕。

-1

是的。插入數據後,您將執行重定向。

5

你需要做的重定向到同一頁:

$current_url = (empty($_SERVER['HTTPS']) ? "http://" : "https://") . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
header ('Location: ' . $current_url); 
exit(); 
+1

實際代碼的唯一答案,它變成醜陋的噩夢。請你選擇一個不那麼醜陋的建築?例如,不要重複整個字符串兩次來改變一個字母? – 2010-12-12 13:30:07

+0

@Col - 這個怎麼樣:'$ current_url =「http」。 (!empty($ _ SERVER ['HTTPS'])?「s」:「」)「://」。$ _ SERVER ['SERVER_NAME']。 $ _SERVER ['REQUEST_URI'];' – AgentConundrum 2010-12-12 13:35:05

+0

@Agent爲了便於閱讀,我會將整個https留在條件之內。儘管三元運算符本身是可讀性的一個巨大漏洞。並且還應該使用HTTP_HOST而不是SERVER_NAME – 2010-12-12 13:38:59

-1

在一個隱藏的輸入使用代碼,並獲得由表代碼此代碼爲〔實施例,如果代碼發送從數據庫中,如果將其刪除未在表格中設置的代碼不接受查詢

2

通常的做法是使用重定向。

你得到請求,使用它包含的數據來加載你的數據庫或其他什麼,然後執行重定向(我認爲你是應該是爲此使用303重定向,但我聽說過很多人使用302s來避免某些瀏覽器故障)。

這樣做的最終結果是發生重定向時沒有發送POST數據,因此刷新不會導致它重新發送,並搞砸了您的應用程序/數據庫。

0

如果您不喜歡上述任何內容並正在使用JQUERY。你可以做一個簡單的加載或ajax函數將信息發送到你的腳本。

這將消除任何重複發送的機會,並且您無需重新加載頁面。我最喜歡這種方法,它快速簡單。

另一種解決方案,你可以做的是有你的形式發送到另一個頁面,有點像這樣:

<form action="chat_server.php" method="post"> 
     Message: <input type="text" name="message" /> 
     <input type="submit" /> 
</form> 

在chat_server.php文件,你做你需要的數據,並在做什麼最後,你做

echo '<meta http-equiv="REFRESH" content="0; url=chat.php" />'; 

試試看,應該擺脫你的問題。

相關問題