首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 防止頁面刷新重複提交表單的實戰方案

     編輯:PHP 相關知識

在 PHP 開發中,處理表單提交是家常便飯,但「使用者刷新頁面導致重複提交」卻是讓許多開發者頭痛的經典問題。最直觀的解法是採用 PRG 模式——提交成功後立即重導向,但若頁面包含大量動態內容或需頻繁與後端互動,跳轉重載會增加伺服器負擔,影響使用者體驗。

利用 Session 實現防重複提交

更優雅的做法是引入 Session 機制:在表單初始化時建立一個唯一標識(Token),提交時驗證並更新該標識。若使用者重新整理頁面再次提交,Token 已失效,即可攔截重複請求。

核心邏輯

<?php
session_start();
// 初始化 Token
if (!isset($_SESSION['form_token'])) {
    $_SESSION['form_token'] = 0;
}

// 處理表單提交
if (isset($_POST['action']) && $_POST['action'] === 'submit') {
    if ($_SESSION['form_token'] === 0) {
        // 首次提交:執行業務邏輯
        echo '<a href="' . $_SERVER['PHP_SELF'] . '">請再次嘗試</a>';
        $_SESSION['form_token'] = 1; // 更新 Token
    } else {
        // 重複提交:給予友善提示
        echo '您已經提交過了,請不要重複提交';
    }
}
?>

前端表單配合

前端表單需包含隱藏欄位 action,值為 submit,配合後端驗證流程。此法不需跳轉,避免重複載入頁面資源,適合高互動場景。

延伸思考

實務上還可結合「一次性 Token」(CSRF Token)同時防範跨站請求偽造,或使用 JavaScript 在提交後禁用按鈕、鎖定表單,從前後端雙重保障資料完整性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved