Postingan lainnya
Mencegah penambahan data ketika halaman direfresh
Teman2 sharing dong bagaimana ketika sudah submit data di form dan ketika direfresh halaman tersebut data tidak terkirim lagi.
Terima Kasih
7 Jawaban:
di form action nya harus ke file lain (misal : input.php) agar menghindari refrest. di file input.php jika menginginkan balik ke form tadi, tinggal di redirect atau header location.
Terima kasih gan jawabannya...tapi di form tersebut saya buat actionnya ke form itu sendiri. kalau kasus kayak gitu gimana gan?
kan di atas udah saya jawab juga gan. jika menginginkan balik ke form tadi, tinggal di redirect atau header location ke file tadi.
contoh
di file form.php <pre> <html> <body>
<form action="input.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form>
</body> </html> </pre>
di file input.php
<pre> //lakukan query simpan data, jika sudah header('Location: form.php'); </pre>
note: jika yg di maksud input tanpa refresh, agan sebaiknya menggunakan ajax post
Ok Gan maksud saya tanpa refresh soalnya form action saya kosongkan.
Terima Kasih
Jawaban Terpilih
2 alternatif, 1 pake header location / Main Session gan,, ini prinsipnya hampir sama kayak csrf token di framework
-
header location / redirect <pre> <?php if(isset($_POST['submit'])) {
$sql = "INSERT INTO ..... ";
mysqli_query($conn, $sql); header('location: nama_file.php'); } ?> </pre>
-
Pake session <pre> <?php if(isset($_POST['submit']) && $_POST['token'] == $_SESSION['token']) {
$sql = "INSERT INTO ..... ";
mysqli_query($conn, $sql);
} ?>
<form action="" method="post"> <?php $token = rand(); $_SESSION['token'] = $token; ?>
<input type="hidden" value="<?php echo $token ?>" name="token" /> <input type="submit" name="submit" value="submit">
</form> </pre>
Gabungkan 2 nya kalau masih tetep gk bisa hehe,,, atau sesuai kebutuhan
bisa juga buat ke file itu sendiri dari formnya
<pre> <?php include('proses.php');?> <html> <head> </head> <body> <form action="index.php"> <input type="submit" name="inp"/> </form> </body> </html> </pre>
jadi dalam case ini kita hanya memanggil proses.php ketika klik tombol submit, file akan mengarah ke index.php
nah bagaimana biar tidak terjadi looping ketika di refres ? saya biasa menggunakan
<pre> if(isset()){} </pre>
buat mendeteksi itu adalah proses yang mana isset sendiri diambil dari nama button yang disini diberi nama "inp" jadi dalam proses.php akan memproses hanya dengan paramater "inp" tersebut
<pre> if(isset($_POST['inp']) {
looping disini
}</pre>
jadi tidak akan ada proses input data yang kedoublelan ketika di refresh.
Refrence :
http://php.net/manual/en/function.isset.php