PHP: Yenileme (F5) İşleminde Repost Engelleme

Bir form aracılığı ile post edilen verilerin PHP ile alınması işlenmesi sonrasında, ziyaretçinin yanlışlıkla veya bilinçli olarak sayfayı yenilemesi durumunda, karşısına “aynı verileri tekrar göndermek istiyor musunuz?” gibi bir uyarı penceresi çıkabilmektedir. Bundan kurtulmanın bir çok yolu mevcut.

Genellikle tercih edilen yöntem, verileri işledikten sonra farklı bir sayfaya yönlendirmek olur. Bazı durumlarda ise başka bir sayfaya yönlendirmek veya sayfayı PHP tarafında refresh etmek istemeyebilirsiniz. Zaten sağlıklı olanı da bence budur.

Aşağıdaki kod parçacığı ile (session_start() daha önce çalıştırılmış ise kaldırarak) bu uyarıyı kaldırabilirsiniz, kullanıcıların aynı verileri tekrar post etmesini engelleyebilirsiniz.

session_start(); 
if( strcasecmp($_SERVER['REQUEST_METHOD'],"POST") === 0) { 
   $_SESSION['postdata'] = $_POST; 
   header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); exit; 
} 

if( isset($_SESSION['postdata'])) { $_POST = $_SESSION['postdata'];  
   unset($_SESSION['postdata']);
}

Related Posts

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir