Menghalang Berbilang Sisipan pada Penyerahan Borang dalam PHP
Berbilang sisipan semasa menghantar borang boleh berlaku apabila pengguna menekan butang hantar beberapa kali. Ini boleh menyebabkan pertindihan data yang tidak diingini. Terdapat beberapa pendekatan untuk menangani isu ini:
Melumpuhkan Butang Hantar JavaScript:
Kaedah ini menggunakan JavaScript untuk melumpuhkan butang hantar selepas ia diklik. Walau bagaimanapun, ia tidak boleh dipercayai kerana borang boleh diserahkan tanpa menggunakan butang atau dengan JavaScript dilumpuhkan.
Cap Masa Sesi PHP:
Pendekatan ini menetapkan pembolehubah sesi ($_SESSION['posttimer']) kepada cap masa semasa semasa penyerahan borang. Semasa pemprosesan borang, ia menyemak sama ada pembolehubah wujud dan membandingkannya dengan cap masa semasa. Jika perbezaan masa kurang daripada ambang yang dipratentukan (cth., 2 saat), penyerahan berganda dikesan.
Kemasukan Token Unik:
Kaedah ini melibatkan memasukkan token unik dalam setiap bentuk. Pembolehubah sesi memegang token yang digunakan dalam borang. Selepas penyerahan borang, token baharu dijana. Jika token yang diserahkan tidak sepadan dengan token sesi, ia dianggap sebagai penyerahan berganda. Contoh:
<code class="php">// form.php $_SESSION['token'] = md5(session_id() . time()); echo '<form action="foo.php" method="post"> <input type="hidden" name="token" value="' . $_SESSION['token'] . '" /> <input type="text" name="bar" /> <input type="submit" value="Save" /> </form>'; // foo.php if (isset($_SESSION['token'])) { if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) { // Double submit detected } }</code>
Dengan melaksanakan salah satu kaedah ini, anda boleh menghalang berbilang sisipan dengan berkesan apabila menyerahkan borang dalam PHP, memastikan integriti data dan mengelakkan pertindihan yang tidak disengajakan.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Pelbagai Sisipan Semasa Menghantar Borang dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!