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

Susan Sarandon
Lepaskan: 2024-11-13 00:43:02
asal
506 orang telah melayarinya

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;
Salin selepas log masuk

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');
Salin selepas log masuk

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>
Salin selepas log masuk
<?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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan