我有一個函數,將文件內容導入到mySQL中並返回結果。如果我刷新頁面並點擊「是」,它會再次執行,使輸出內容相同。PHP刷新,如何停止在刷新頁面時再次調用上一個函數?
我該如何阻止這種情況發生?在這種特殊情況下,地址欄中沒有URI,但有其他功能。
我有一個函數,將文件內容導入到mySQL中並返回結果。如果我刷新頁面並點擊「是」,它會再次執行,使輸出內容相同。PHP刷新,如何停止在刷新頁面時再次調用上一個函數?
我該如何阻止這種情況發生?在這種特殊情況下,地址欄中沒有URI,但有其他功能。
您應該檢查數據庫中的內容是否存在,如果不存在,請填寫它們。否則,請不要運行該功能。
僞代碼:
if !database.containsRecords
fillDatabase()
end
在此之上,它始終是一個POST請求後重定向好的做法。所以你會想:
fillDatabase();
header("Location page.php");
exit();
查詢每個頁面加載的數據庫並查看它是否已經被填充。如果它已填充,則不要嘗試重新填充它。
你應該使用POST-redirect-GET pattern。
更新數據庫後,將HTTP重定向發送到顯示結果的單獨頁面。
刷新瀏覽器將重新加載該單獨的頁面。
我假設你使用POST表單來上傳文件。 您可以在表單中包含帶有僞隨機唯一標識的隱藏輸入字段。 如果用戶通過POST重新發送數據,您可以檢查您是否已經處理了此請求。 隱藏字段不會保存,因爲用戶可能會編輯它們,但您可以檢測到意外重新提交。
讓腳本檢查該記錄是否已存在於數據庫中? – 2011-04-17 15:53:25
可以,但唯一的方法是檢查文件名,如果文件名已存在,則重命名並添加它。 – Nicekiwi 2011-04-17 15:54:59