Arkadaşlar merhaba,
Site'de başvuru gönderdikten sonra sayfa yenilenince post tekrar gönderiliyor. Bunu engellemek için ne yapabilirim ?
PHP sayfa yenileme sorunu
10
●1.230
- 05-02-2019, 17:02:59Post işleminden sonra kodunuzun en sonuna sayfayı bir kere daha yeniletecek kod ekleyin.Fhm adlı üyeden alıntı: mesajı görüntüle
header('Location: index.php');gibi.
Bu arada T.C. Kimlik ve Telefon numarası bölümlerine yazı yazılabiliyor o inputları düzenlemenizi öneririm. Birde bilgi doğruluğu hakkındaki checkbox işaretlenmeden form gönderilebiliyor - 05-02-2019, 17:03:56header ("location: url");
ile post verdirdikten sonra sayfaya yeniden yönlendirme yapabilirsin, ancak sayfayda her hangi bir çıktı almadan yapılması gerekiyor,
eğer sayfan müsait değilse çıktı aldığın yere aşağıdakini koyabilirsin,
window.location.replace("http://sayfaadresi.com");
ama en profesyonel olan çözüm form göndermeden önce token üretip, form gönderdikten sonra token ile işlem yapıp, token ı değiştirmektir. iki token birbirini tutmuyorsa form göndermesinin önüne geçilir. - 05-02-2019, 23:59:00Maalesef o kadar hakim değilim hocam.kralldepo adlı üyeden alıntı: mesajı görüntüle
Veritabanına gönderiliyor hocam.notbil adlı üyeden alıntı: mesajı görüntüle
Kodu ekledim ama aynı işlem devam ediyor hocam, checkbox ve diğer işlemleri de yaptım, uyardığınız için teşekkürler.black_scorpion adlı üyeden alıntı: mesajı görüntüle
location kodunu ekledim ancak sayfa yine aynı sorunu veriyor, else kodundan sonra ekledim. Doğru yer mi bilmiyorum, verdiğiniz diğer bilgiler için ayrıca teşekkür ederim ama çok hakim olmadığım için o kadarını anlamadım.merner adlı üyeden alıntı: mesajı görüntüle
Kodu ekledim ama aynı hata devam ediyor hocam.SefaCan adlı üyeden alıntı: mesajı görüntüle
<?php if ($_POST) { $ad = $_POST['ad']; $soyad = $_POST['soyad']; $eposta = $_POST['eposta']; $tc = $_POST['tc']; $telefon = $_POST['telefon']; $sehir = $_POST['Sehir']; if ($ad<>"" && $soyad<>"" && $eposta<>"" && $tc<>"" && $telefon<>"" && $sehir<>"") { if ($baglanti->query("INSERT INTO kayit (ad,soyad,eposta,tc,telefon,Sehir) VALUES ('$ad','$soyad','$eposta','$tc','$telefon','$sehir')")) { echo "<p align='center' style='color:red;'><strong><font size=\"5\">", "Başvurunuz Alındı</strong></font></p>"; } else { echo "Hata oluştu"; } } } header ("location: index.php"); exit; ?>PHP kodlarım bu şekilde. - 06-02-2019, 03:16:53Üyeliği durdurulduAjax yöntemi ile yapmak en mantıklısı ama eğer ajax bilginiz yok ise şu şekilde bir mantık yürütebilirsiniz. Bu şekilde de sayfa yenilendiğinde post işlemi olacaktır ama veritabanında aynı veri daha önceden kayıt olduğu için yeniden kayıt işlemi yapılmayacaktır. Ben kısaca mantığı belirttim, siz kendinize göre düzenleyebilir ve kendinize göre hata mesajları verdirtebilrsiniz. Bu arada yazdığım kodda header kodunu kullanmanıza gerek olmadığı için kaldırdım.
http://prntscr.com/mh6f0e - 06-02-2019, 15:04:44notbil adlı üyeden alıntı: mesajı görüntüle
<?php if ($_POST) { $ad = $_POST['ad']; $soyad = $_POST['soyad']; $eposta = $_POST['eposta']; $tc = $_POST['tc']; $telefon = $_POST['telefon']; $sehir = $_POST['Sehir']; if ($ad<>"" && $soyad<>"" && $eposta<>"" && $tc<>"" && $telefon<>"" && $sehir<>"") { $telefonsor=$baglanti->query("SELECT telefon FROM kayit WHERE telefon='$telefon'"); $telefonsay=$telefonsor->rowCount(); if($telefonsay==0){ if ($baglanti->query("INSERT INTO kayit (ad,soyad,eposta,tc,telefon,Sehir) VALUES ('$ad','$soyad','$eposta','$tc','$telefon','$sehir')")) { echo "<p align='center' style='color:red;'><strong><font size=\"5\">", "Başvurunuz Alındı</strong></font></p>"; } if($telefonsay==1){ echo "Bu telefon numarası ile daha önce başvuru yapılmıştır."; } } } exit; ?>Verdiğiniz gibi ekledim kodları ama sayfa hiç açılmıyor bu şekilde. Bi yerde bi hata mı yaptım acaba ?