Arkadaşlar bir iletişim formum var.
İletişim formumdaki verileri kaydete bastığımda veritabanına yazıyor.
Arkasından o sayfada klavyeden f5 tuşuna bastığım anda "Yeniden form gönderme işlemini onayla" yazısı çıkıyor ve tamama basıldığında aynı veri ikinci kez ekleniyor.
Bir kullanıcı birden çok kez iletişim formunu kullanabilir.Bu yüzden bu gönderilen veritabanında varmı veya yokmu diye kontrol edemiyorum.
Peki bunun kontrolünü nasıl sağlarım? Yani sayfa refresh yapılarak ikinci kez post edilmesin.
Sayfanın ikinci kez post edilmesini nasıl engellerim?
6
●13.844
- 30-09-2013, 13:36:06işlem bittikten sonra header(location: ) ile yönlendirirsen bu sorun ortadan kalkar.
- 30-09-2013, 13:55:38Yönlendirme olmazsa?Irresistible adlı üyeden alıntı: mesajı görüntüle
Bu adresteki uygulama işinize yarayacaktır. - 01-10-2013, 10:44:46@msgr arkadaşın verdiği linkte gayet basit anlatılmış. Oradaki örnekten yola çıkarak şöyle basitleştireyim;
<?php /*** sessionı başlat ***/ session_start(); /*** unique bir id belirle ***/ $form_token = uniqid(); /*** değişkeni session'a ata***/ $_SESSION['form_token'] = $form_token; ?> <form method="post" action="yaz.php"> <input type="text" name="first_name" placeholder="Adınız Soyadınız" /> <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" /> </form><?php /*** sessionı başlat***/ session_start(); /*** bütün değerlere değer verilmiş mi kontrol et ***/ if(!isset($_POST['first_name'], $_POST['form_token'], $_SESSION['form_token'])) { $message = 'Geçersiz giriş'; } /*** formdan gelen veri ile session verisi eşit mi kontrol et ***/ elseif($_POST['form_token'] != $_SESSION['form_token']) { $message = 'Erişim engellendi'; } /*** isim soy isimi kontrol et (boş mu, uzunluğu 50 karakterden büyük mü)***/ elseif(strlen(trim($_POST['first_name'])) == 0 || strlen(trim($_POST['first_name'])) > 50) { $message = 'Hatalı isim soyisim'; } else { /*** mesajı belirle ***/ $message = 'Teşekkür ederiz ' . $first_name; /*** session'u unset ediyoruz, yani kaldırıyoruz ***/ unset( $_SESSION['form_token']); } ?> - 01-10-2013, 11:01:15session değil cookie kullanın. session sunucuya kaydediliyor, cookie kullanıcının bilgisayarına. gereksiz yere tmp de session bilgisi tutulmasın