簡體   English   中英

如何使表單僅在單擊按鈕時提交而不在刷新時提交?

[英]How to make a form submit only on button click not on refresh?

我有一個表單,僅當表單字段更改時,我才應使表單提交(對服務的請求);如果用戶刷新頁面時字段未更改,則不應再次提交表單。

目的是盡可能減少表單提交的數量,因此,如果用戶輸入的數據相同並且他刷新,我們不應浪費先前返回的數據並嘗試提出新的請求並顯示相同的數據。

相反,僅當TEXT(searchdirectory)更改時才應提交。 因此,不會重復請求相同的數據。

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">            
        <label>TEXT :</label>
        <input type="text" id="search_dir" name="searchdirectory"
            value="<?php
                    if (isset($_POST['searchdirectory']))
                    {
                        echo($_POST['searchdirectory']); 
                    }
                   ?>"
        />            
        <input type="submit" value="Search" name="submit" id="searchB"/>
        <?php            
            if (isset($_POST['submit'])) 
            {
             //functions  to show results queried from searchdirectory
            }
        ?>
    </form>

我想這將是處理瀏覽器的刷新行為,如果用戶刷新頁面,有沒有辦法停止提交表單。 它應該顯示相同的數據。

第一次發送表單數據時,請使用重定向。

<?php            
    if (isset($_POST['submit'])) 
    {
        //do function
        header("Location: http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
    }
?>

其中"http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] "http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] "http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] -是一個鏈接,表單提交后用戶將被重定向到該鏈接。

有兩種方法。 但是我嘗試解決您的目標,而不是您的特定問題:)

  1. 提交表單后,您可以將瀏覽器轉發到新的URL。 這是非常正常的過程。 這樣,當您提交表單時,瀏覽器會立即重定向到普通的GET URL。 現在,如果用戶單擊刷新,則不會再次提交表單。

2如果表單是登錄對話框等,則應使用的另一種方法。將一次性會話密鑰添加到表單隱藏字段中,並將相同的密鑰存儲在服務器上。 現在,如果用戶提交表單,請檢查鍵是否匹配。 如果他們確實接受提交,請清除密鑰。 如果用戶現在再次按下F5,並且您已經刪除了鍵,只需拒絕提交的值即可。

為什么在提交后不清除表單,或者為每個提交請求添加會話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM