Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencegah Penyerahan Borang Berbilang dengan PHP?

Bagaimana untuk Mencegah Penyerahan Borang Berbilang dengan PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-09 14:26:02634semak imbas

How to Prevent Multiple Form Submissions with PHP?

Mencegah Penyerahan Berbilang Borang dengan PHP

Dalam pembangunan web, adalah penting untuk melindungi daripada penyerahan berbilang borang apabila pengguna berulang kali mengklik pada serahan butang. Ini boleh membawa kepada hasil yang tidak diingini, seperti entri data pendua atau tingkah laku yang tidak dijangka. PHP menawarkan beberapa teknik untuk menghalang isu ini.

Satu pendekatan yang berkesan ialah menggunakan token bentuk unik. Apabila borang dipaparkan, token unik dijana dan disimpan dalam sesi. Apabila borang diserahkan, token disemak terhadap versi yang disimpan. Jika token sepadan, penyerahan borang diproses. Jika tidak, penyerahan ditolak, menghalang berbilang penyerahan.

Berikut ialah pelaksanaan PHP mudah:

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>

Untuk meningkatkan keselamatan, gabungkan pengesahan token ini dengan ubah hala pada penyerahan borang. Ini memastikan bahawa apabila pengguna menekan butang belakang, borang baharu dipaparkan dengan token baharu. Corak ini, dikenali sebagai POST / ubah hala / GET, seterusnya menghalang berbilang penyerahan dan mengekalkan keserasian ke belakang dan ke hadapan.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penyerahan Borang Berbilang dengan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn