首頁 >後端開發 >php教程 >如何使用唯一令牌防止 PHP 中的多次點擊表單提交?

如何使用唯一令牌防止 PHP 中的多次點擊表單提交?

Barbara Streisand
Barbara Streisand原創
2024-11-12 06:23:02517瀏覽

How to Prevent Multiple Click Form Submission in PHP Using Unique Tokens?

PHP 中的多次點擊表單提交預防

在Web 應用程式中,防止多次表單提交可以增強用戶體驗和資料完整性。 PHP 提供了解決此問題的解決方案。

解:唯一令牌

PHP 使用每次顯示表單時產生的唯一令牌。該令牌只能使用一次。實施令牌系統不僅可以防止多次表單提交,還可以防止跨站請求偽造 (CSRF) 和重播攻擊。

實作範例:

<?php
session_start();

// Function to create a unique token
function getToken() {
  $token = sha1(mt_rand());
  $_SESSION['tokens'][$token] = 1;
  return $token;
}

// Function to validate a token
function isTokenValid($token) {
  if (isset($_SESSION['tokens'][$token])) {
    unset($_SESSION['tokens'][$token]);
    return true;
  }
  return false;
}

// Check if a form has been submitted
$postedToken = filter_input(INPUT_POST, 'token');
if ($postedToken) {
  if (isTokenValid($postedToken)) {
    // Process form
  } else {
    // Handling for invalid token
  }
}

// Generate a token for the displayed form
$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中文網其他相關文章!

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