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!