首頁 > 後端開發 > php教程 > 如何使用 PHP 防止多次表單提交?

如何使用 PHP 防止多次表單提交?

Barbara Streisand
發布: 2024-11-09 14:26:02
原創
687 人瀏覽過

How to Prevent Multiple Form Submissions with PHP?

使用PHP 防止多次表單提交

在Web 開發中,當使用者重複點擊提交時,必須防止多次表單提交按鈕。這可能會導致意外的結果,例如重複的資料條目或意外的行為。 PHP 提供了多種技術來防止此問題。

一種有效的方法是利用獨特的表單標記。當顯示表單時,會產生一個唯一的令牌並將其儲存在會話中。提交表單後,將根據儲存的版本檢查令牌。如果標記匹配,則處理表單提交。如果不這樣做,提交將被拒絕,從而防止多次提交。

這是一個簡單的 PHP 實作:

session_start();

function getToken() {
  $token = sha1(mt_rand());
  if (!isset($_SESSION['tokens'])) {
    $_SESSION['tokens'] = array($token => 1);
  } else {
    $_SESSION['tokens'][$token] = 1;
  }
  return $token;
}

function isTokenValid($token) {
  if (!empty($_SESSION['tokens'][$token])) {
    unset($_SESSION['tokens'][$token]);
    return true;
  }
  return false;
}

$postedToken = filter_input(INPUT_POST, 'token');
if (!empty($postedToken)) {
  if (isTokenValid($postedToken)) {
    // Process form
  } else {
    // Handle error
  }
}

$token = getToken();
登入後複製
<form method="post">
  <fieldset>
    <input type="hidden" name="token" value="<?php echo $token; ?>" />
    <!-- Add form content -->
  </fieldset>
</form>
登入後複製

要增強安全性,請將此令牌驗證與重定向結合起來關於表單提交。這可確保當使用者按下後退按鈕時,會顯示帶有新令牌的新表單。這種模式稱為 POST / 重定向 / GET,進一步防止多次提交並保持向後和向前相容性。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板