Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menghalang Penyerahan Semula Borang Yang Tidak Diingini dalam Aplikasi Web?

Bagaimanakah Saya Boleh Menghalang Penyerahan Semula Borang Yang Tidak Diingini dalam Aplikasi Web?

Susan Sarandon
Susan Sarandonasal
2024-11-13 00:43:02503semak imbas

How Can I Prevent Unintended Form Resubmission in Web Applications?

Menghalang Penyerahan Semula Borang Yang Tidak Diinginkan

Penyerahan semula borang disebabkan penyegaran halaman adalah gangguan biasa dalam aplikasi web. Untuk mengendalikan isu ini dengan berkesan, adalah penting untuk menggunakan strategi berikut:

Ubah Hala Selepas Penyerahan

Daripada memaparkan respons pada halaman yang sama, ubah hala pengguna ke halaman berasingan sebaik sahaja borang diserahkan. Ini memastikan bahawa apabila halaman yang dimuatkan semula, ia merupakan permintaan GET baharu dan bukan pengulangan permintaan POST yang telah diproses.

Contoh:

// submit
// set success flash message (you are using a framework, right?)
header('Location: /path/to/record');
exit;

Lumpuhkan Caching Penyemak Imbas

Untuk menghalang penyemak imbas daripada menyimpan cache borang anda, tambahkan pengepala berikut pada skrip PHP anda:

header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');

Token Halaman Unik

Jana token unik pada pelayan untuk setiap penyerahan borang. Sertakan token ini sebagai medan tersembunyi dalam borang dan sahkannya sebelum diproses. Jika token tidak sepadan atau tiada, buang permintaan sebagai penyerahan pendua.

Contoh (dengan token sesi):

<?php
session_start();

// Generate a unique token and store it in the session
$token = md5(uniqid(mt_rand(), true));
$_SESSION['token'] = $token;

?>

<!DOCTYPE html>
<html>
<body>

<form action="submit.php" method="post">
  <input type="text" name="name">
  <input type="hidden" name="token" value="<?php echo $token; ?>">
  <input type="submit" value="Submit">
</form>

</body>
</html>
<?php
session_start();

// Get the submitted token
$token = $_POST['token'];

// Check if the token matches the session token
if ($token != $_SESSION['token']) {
  // Discard the request
} else {
  // Process the form data
}

Kesimpulan

Dengan melaksanakan teknik ini, anda boleh menghalang penyerahan semula borang yang tidak diingini dengan berkesan akibat penyegaran halaman dan memastikan aplikasi web anda berfungsi seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Penyerahan Semula Borang Yang Tidak Diingini dalam Aplikasi Web?. 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