Mencegah Resubmit POST Method PHP


POST merupakan sebuah metode yang dapat digunakan untuk mengirim ataupun menangkap data yang dikirim melalui sebuah formulir html. Baik disadari atau tidak, bahwa ketika misal Anda membuat sebuah halaman php sederhana untuk mengirim data menggunakan method post, lalu ketika proses postnya berhasil kemudian Anda merefresh halaman, maka kemungkinan web browser Anda akan menampilkan pesan seperti berikut :

Mencegah Resubmit POST Method PHP



To display this page, Firefox must send information that will repeat any action (such as a search or order confirmation) that was performed earlier

atau jika pada browser chrome pesanya seperti berikut :

Confim Form Resubmission, The page that you're looking for used information that you entered. Returning to that page might cause any action you took to be repeated. Do you want to continue?


Resubmission seperti contoh diatas tentu bukanlah hal yang bagus, Anda mungkin akan mengirimkan/menyimpan data yang sama ketika halaman berulang – ulang di refresh. Untuk mengatasi masalah seperti diatas, Anda bisa mengikuti langkah – langkah berikut :


Mencegah Resubmit/Resubmission POST Method PHP


Ada beberapa metode, solusi atau mungkin secara teknis akan ada 3 buah baris fungsi yang bisa Anda buat untuk mengatasi masalah resubmission pada post method php.

Saya asumsikan disini Anda sudah memiliki halaman untuk melakukan uji coba ini, atau jika belum silahkan simpan file dibawah ini dengan nama index.php


<?php


$nama = "";
if($_SERVER['REQUEST_METHOD']=='POST')
{
	
	$nama = $_POST['nama'];
	
	if($nama==true)
	{
		$nama="Nama Anda adalah : ".$nama;
		
	}
}
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Mecegah Resubmit POST Method PHP - ROOT93.CO.ID</title>
		<style>
            body {
                font-family: arial;
                font-size: 12pt;
               
            }
            table.items {
              font-size: 9pt; 
              border-collapse: collapse;
              border: 3px solid #880000; 
            }
            table.items2 {
              font-size: 12pt; 
             border-collapse: collapse;
              border: 1px solid #ccc; 
            }
            td { vertical-align: top; 
            }
            table thead th { background-color: #EEEEEE;
              text-align: center;
            }
            table tfoot td { background-color: #AAFFEE;
              text-align: center;
            }
            .container{ margin: 0 auto; width: 100%; display: flex; justify-content: center; }
           
        </style>
</head>
<body>

	<div align="center">
		<h3>Mencegah Resubmit POST Method PHP - ROOT93</h3>
		<form action="<?php $_SERVER['PHP_SELF']?>" method="post">
			<table class="items2" width="500px" cellpadding="6">
				<tr>
					<td>Nama Lengkap</td>
					<td>
						<input type="text" name="nama" placeholder="Masukan nama lengkap"><input type="submit" name="kirim" value="simpan"></td>
				</tr>
				<tfoot>
					<tr>
						<td colspan="2"><?=$nama?></td>
				</tfoot>
				
			</table>
		</form>
	</div>
</body>
</html>


Kemudian Anda uji coba untuk mengisi formulir, dan nantinya akan ada pesan resubmit ketika browser di refresh.

Membuat Fungsi Untuk Mencegah Resubmission POST PHP

Terdapat 3 parameter ataupun solusi yaitu menggunakan meta refresh, javascript, dan header location. Dan ketiga fungsi tersebut bisa Anda masukan kedalam sebuah file yang bisa Anda panggil ketika dibutuhkan. Misalnya buat sebuah file function.php untuk menampung fungsi yang nantinya ingin Anda gunakan


<?php 

	function reload($time, $url=null)
	{
		echo "<meta http-equiv=\"refresh\"content=\"$time;URL=$url\"/>";
	}
	function no_resubmit()
	{
		?>

			<script>
					if ( window.history.replaceState ) {
						        window.history.replaceState( null, null, window.location.href );
						}
			</script>

		<?php 
	}
	function redirect($uri)
	{
		header('location:'.$uri);
		exit;
	}


Untuk menggunakan fungsi diatas, Anda cukup memanggilnya atau menambahkannya ketika proses validasi form berhasil, atau sesuai proses memasukan data berhasil seperti berikut

javascript

<?php
require_once 'function.php';

$nama = "";
if($_SERVER['REQUEST_METHOD']=='POST')
{
	
	$nama = $_POST['nama'];

	if($nama==true)
	{
		$nama="Nama Anda adalah : ".$nama;
		no_resubmit();
		
	}
}
?>

Meta refresh


<?php
require_once 'function.php';

$nama = "";
if($_SERVER['REQUEST_METHOD']=='POST')
{
	
	$nama = $_POST['nama'];

	if($nama==true)
	{
		$nama="Nama Anda adalah : ".$nama;
		reload(1,"index.php");
		
	}
}
?>

Header location


<?php
require_once 'function.php';

$nama = "";
if($_SERVER['REQUEST_METHOD']=='POST')
{
	
	$nama = $_POST['nama'];

	if($nama==true)
	{
		$nama="Nama Anda adalah : ".$nama;
		redirect('index.php');
		
	}
}
?>

0 Response to "Mencegah Resubmit POST Method PHP"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin