Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencegah Pelbagai Sisipan Semasa Menghantar Borang dalam PHP?

Bagaimana untuk Mencegah Pelbagai Sisipan Semasa Menghantar Borang dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 21:32:02938semak imbas

How to Prevent Multiple Inserts When Submitting Forms in PHP?

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:

  1. 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.

  2. 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.

  3. 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!

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