2009-12-26 103 views
1

例如,我問這個問題,然後單擊「發佈您的問題」並保留在當前頁面中。現在我可以點擊瀏覽器的「刷新」按鈕來查看新的答案。但我發現在我的網站上,如果我點擊「刷新」按鈕,將會發佈一個重複的問題。如何避免這個問題? 我正在使用PHP。當用戶點擊瀏覽器的「刷新」按鈕時如何避免重複?

+0

如何確定數據是否已提交? – Steven 2009-12-26 07:46:47

+0

stackoverflow.com如何避免/解決此問題? – Steven 2009-12-26 08:04:46

回答

6

這是POST請求後通常的做法,重定向到同一頁面以避免此問題。

比方說,你是在/ask_question.php

你開<form>標籤可能是這樣的:

<form action="/ask_question.php" method="post"> 

現在,在/ask_question.php做這樣的事情:

if(isset($_POST['new-question'])){ 
    // Do your processing here 

    // On success: 
    header('Location: /ask_question.php'); 
    exit(); // End the request 
} 

更新僅在重定向後重要已經處理了有效的$_POST請求。我測試了名爲new-question表單域,但你應該使用有存在的任何形式的字段名稱爲$_POST成功

這種處理他們發佈的數據,然後成功,重定向回同一頁。現在唯一的區別是,當他們點擊刷新時,不會發布任何信息。

注意只要確保在header調用之前沒有任何東西echo'被刪除。

+0

打我吧。 =) – 2009-12-26 07:50:23

+0

@Alix哈哈。但是,我太冗長了。你的答案要短得多,並且可能更好地傳達答案:) – 2009-12-26 07:52:31

+0

@Doug:詳細程度很好。 =) – 2009-12-26 07:58:06

0

首先,爲您的表單使用POST。幾乎每個瀏覽器都會要求用戶在刷新POST表單結果時進行確認,因爲它必須重新提交。

其次,在您的表單處理腳本中,檢查問題是否已經存在 - 或爲用戶設置會話並跟蹤他們是否最近提交了一些內容。

+0

但我的瀏覽器(Firefox)不會要求我確認。 – Steven 2009-12-26 08:03:25

+0

然後你的瀏覽器有一個錯誤。這個對我有用。 – 2009-12-26 08:06:53

1

提交使用POST形式,在提交驗證,如果一切都很好用戶重定向到成功頁面,這樣,如果用戶刷新頁面所有他要做的就是再次看到「謝謝」頁面。

相關問題