首頁  >  文章  >  後端開發  >  PHP提交表單時如何防止多次插入?

PHP提交表單時如何防止多次插入?

Linda Hamilton
Linda Hamilton原創
2024-10-21 21:32:02855瀏覽

How to Prevent Multiple Inserts When Submitting Forms in PHP?

防止PHP 中表單提交時的多次插入

當使用者多次按下提交按鈕時,可能會在提交表單時發生多次插入。這可能會導致意外的數據重複。有幾種方法可以解決此問題:

  1. JavaScript 提交按鈕停用:

    此方法使用 JavaScript 在提交按鈕提交後停用它。點擊。但是,它並不可靠,因為可以在不使用按鈕或停用 JavaScript 的情況下提交表單。

  2. PHP 會話時間戳:

    此方法在表單提交時將會話變數($_SESSION['posttimer']) 設定為目前時間戳。在表單處理期間,它會檢查變數是否存在並將其與當前時間戳進行比較。如果時間差小於預定義閾值(例如 2 秒),則偵測到重複提交。

  3. 唯一令牌包含:

    此方法涉及在每個表單中包含一個唯一的標記。會話變數保存表單中使用的令牌。提交表單後,會產生一個新令牌。如果提交的令牌與會話令牌不匹配,則視為重複提交。範例:

    <code class="php">// form.php
    $_SESSION['token'] = md5(session_id() . time());
    
    echo '<form action="foo.php" method="post">
           <input type="hidden" name="token" value="' . $_SESSION['token'] . '" />
           <input type="text" name="bar" />
           <input type="submit" value="Save" />
        </form>';
    
    // foo.php
    if (isset($_SESSION['token'])) {
        if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
            // Double submit detected
        }
    }</code>

透過實作其中一種方法,可以有效防止在 PHP 中提交表單時的多次插入,確保資料完整性並避免無意的重複。

以上是PHP提交表單時如何防止多次插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn