Menghindari pengiriman ganda pada formulir (double submit) merupakan langkah penting dalam mengamankan aplikasi web. Dua pendekatan umum untuk mencapai hal ini adalah menggunakan PHP dan JavaScript. Berikut adalah contoh penggunaan kedua bahasa tersebut untuk mencegah pengiriman ganda formulir:
1. Menggunakan Session (PHP)
Pada pendekatan ini, kita menyimpan status pengiriman formulir di sesi PHP. Jika formulir sudah dikirimkan, kita akan menandainya dalam sesi, sehingga formulir tidak dapat dikirimkan lagi.
<?php session_start(); if (isset($_POST["submit"])) { if (!isset($_SESSION["submitted"])) { $_SESSION["submitted"] = true; // Proses formulir } else { echo "Formulir sudah dikirim sebelumnya!"; } } ?> <form action="form.php" method="post"> <input type="text" name="nama"> <input type="submit" name="submit" value="Submit"> </form>
2. Menggunakan JavaScript
Alternatifnya, kita dapat menonaktifkan tombol submit menggunakan JavaScript setelah formulir dikirimkan, sehingga formulir tidak dapat dikirimkan lagi.
<form action="submit.php" method="post"> <input type="text" name="nama"> <input type="submit" name="submit" value="Submit" id="submit-button"> </form> <script> document.getElementById("submit-button").addEventListener("click", function () { this.disabled = true; }); </script>
Dua pendekatan di atas akan membantu mencegah pengiriman ganda formulir dan memastikan bahwa formulir hanya dapat dikirimkan sekali.
Tambahan Solusi PHP
Selain itu, solusi PHP lainnya adalah dengan menghentikan eksekusi skrip setelah menemukan bahwa formulir sudah dikirimkan sebelumnya.
<?php session_start(); if (isset($_POST["submit"])) { if (!isset($_SESSION["submitted"])) { $_SESSION["submitted"] = true; // Proses formulir } else { echo "Formulir sudah dikirim sebelumnya!"; exit; // Hentikan eksekusi skrip } } ?> <form action="form.php" method="post"> <input type="text" name="nama"> <input type="submit" name="submit" value="Submit"> </form>
Dengan solusi ini, setelah formulir dikirimkan sekali, pesan “Formulir sudah dikirim sebelumnya!” akan ditampilkan dan eksekusi skrip akan dihentikan.
Tambahan Solusi JavaScript
Solusi JavaScript alternatif adalah untuk menonaktifkan tombol submit setelah diklik, mencegah pengiriman ganda formulir.
<form action="submit.php" method="post"> <input type="text" name="nama"> <input type="submit" name="submit" value="Submit" id="submit-button"> </form> <script> document.getElementById("submit-button").addEventListener("click", function (event) { this.disabled = true; }); </script>
Dengan solusi ini, tombol submit akan dinonaktifkan setelah diklik, mencegah pengiriman ganda formulir.