防止PHP 中表單提交時的多次插入
當使用者多次按下提交按鈕時,可能會在提交表單時發生多次插入。這可能會導致意外的數據重複。有幾種方法可以解決此問題:
JavaScript 提交按鈕停用:
此方法使用 JavaScript 停用提交按鈕後點擊。但是,它並不可靠,因為可以在不使用按鈕或停用 JavaScript 的情況下提交表單。
PHP Session Timestamp:
此方法在表單提交時將會話變數($_SESSION['posttimer']) 設定為目前時間戳。在表單處理期間,它會檢查變數是否存在並將其與當前時間戳進行比較。如果時間差小於預定義閾值(例如 2 秒),則偵測到重複提交。
唯一代幣包含:
此方法涉及在每個表單中包含一個唯一的標記。會話變數保存表單中使用的令牌。提交表單後,會產生一個新令牌。如果提交的令牌與會話令牌不匹配,則視為重複提交。例:
// form.php
$_SESSION['token'] = md5(session_id() . time());
echo '';
// foo.php
if (isset($_SESSION['token'])) {
if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
// Double submit detected
}
}
透過實作其中一種方法,可以有效防止在 PHP 中提交表單時的多次插入,確保資料完整性並避免無意的重複。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3