我有一個網頁,其中包含一個使用POST方法的表單並引用它提交的同一頁面。我正在使用一個PHP包含文件,其中包含在設置提交值時運行的if語句。但是,由於某種原因,在一次提交之後,每次刷新頁面時,都會將表單提交之前提交的數據(在刷新頁面之前,瀏覽器會警告此信息)。是什麼導致了這種情況,我可能做錯了什麼?頁面刷新導致表單提交
3
A
回答
1
這是預期的。您應該將表單提交給具有唯一URL的處理程序,無論它是查詢字符串還是不同的URI。一種解決方案(許多)是改變你的表單操作:
<form action="?action=submit" method="post">
,然後在PHP腳本處理表單,然後更改上下文回網址沒有查詢字符串
if (!empty($_POST['action']) && $_POST['action'] == 'submit') {
// do stuff
header('Location: '.$_SERVER['SCRIPT_NAME']);
die();
}
0
我與我的一個網頁有同樣的問題。 原因是,當瀏覽器警告你它會再次提交表單時,這意味着當你點擊一個提交按鈕時,它會變成同樣的東西。
我做了2件事情,以避免它,但我相信有很多其他方式。 1.不要讓頁面在成功提交表單後再次回顯表單。 我的是這樣的
<?php
if(!isset($_POST['submit'])) {
include(form.php);// you can modify this according to your needs.
} else {
//display your message about what happened with the form.
}
?>
這種做法,你的頁面將不會在一,容表單提交然而,這並不能阻止它從提交上刷新。 2.如果表單已提交,則創建一個控制器輸入,其中攜帶一個表示表單已提交的值。例如,把這個到您的形式:
<?=(isset($_POST['submit']))?"" :"<input type-"hidden" name="submit_stat" value="true" />" ; ?>
,當你提交時處理您的表單與你的PHP檢查,並作出這樣的變量腳本行爲:
<?php
if($_POST['submit_stat']==true) {
//do not process the form here.
//stop your script
}
?>
另一個你可以做的事情是將頁面重定向到除了處理表單的頁面之外的其他頁面。我相信這是最安全的。
0
阻止這種情況的另一種方法是將發佈數據移至會話,重定向,從會話收集回發並刪除會話發佈數據。
if(!empty($_POST) && empty($_FILES)){
// move post to session
// redirect to same url (don't forget possible get query)
}else{
// collect post from session
// unset post from session
}
將此設置爲默認設置,您不應該對發佈數據有任何問題。
只有文件上傳有例外。在這種情況下重定向* 後 *後處理manualy。
相關問題
- 1. 停止表單刷新頁面提交
- 2. 提交表單不刷新頁面
- 3. PHP - 頁面刷新表單提交
- 4. jQuery在表單提交刷新頁面
- 5. Ajax表單提交刷新頁面
- 6. 提交表單後刷新頁面
- 7. 刷新頁面提交表單反覆
- 8. 表單提交無刷新頁面
- 9. 刷新表單提交後的頁面
- 10. jquery iframe表單提交刷新頁面
- 11. 提交表單php無刷新頁面
- 12. 表單提交按鈕/刷新頁面
- 13. 表單在頁面刷新提交
- 14. Ajax表單提交刷新頁面
- 15. Symfony2表單提交頁面刷新
- 16. 爲什麼常規表單提交POSTing數據會導致頁面刷新?
- 17. Twitter引導,通過jquerys提交表單submit()只刷新頁面
- 18. 提交表單並刷新產品DIV無刷新頁面
- 19. Meteor.call(...)導致刷新頁面
- 20. print_r導致頁面刷新?
- 21. 刷新頁面提交
- 22. 提交後刷新頁面
- 23. 刷新頁面提交
- 24. Intreceptor刷新表格後,提交頁面
- 25. 刷新頁面後提交ajax表格
- 26. 提交表格後刷新頁面
- 27. 單擊表單中的按鈕會導致頁面刷新
- 28. HTML提交表單無刷新頁面並顯示提示框
- 29. 刷新頁面時避免Spring MVC表單重新提交
- 30. 避免頁面刷新時使用jQuery重新提交表單
顯示一些代碼,我們只能推測到那時。 – Julio
這是刷新表單提交結果頁面時的預期行爲。如果你鏈接到或導航到的網址而不是刷新你將得到沒有提交頁面。 –
這是您通過** POST **提交表單時的預期行爲,然後刷新 – Leonardo