• 29-10-2021, 12:50:26
    #1
    Merhabalar,

    Bilgilerde hata olunca ekranda uyarı veriyor, fakat yine verileri veritabanına ekliyor, nerde hata yapıyorum?

    session_start();
    require_once('includes/config.php');
    
    //Code for Registration 
    if(isset($_POST['submit']))
    {
        $ad=$_POST['ad'];
        $soyad=$_POST['soyad'];
        $tc=$_POST['tc'];
    	$dogum=$_POST['dogum'];
    	$kullanici=$_POST['kullanici'];
    	$email=$_POST['email'];
        $password=$_POST['password'];
    $sql=mysqli_query($con,"select id from users where tc='$tc'");
    $row=mysqli_num_rows($sql);
    if($row>0)
    {
        echo "<script>alert('Bu T.C Kimlik Numarası ile Kayıt Olunmuş.  Şifre Sıfırlama Sayfasına Yönlendiriliyorsunuz.');</script>";
    	echo "<script type='text/javascript'> document.location = 'sifre-kurtarma.php'; </script>";
    }
    
    $sql=mysqli_query($con,"select id from users where kullanici='$kullanici'");
    $row=mysqli_num_rows($sql);
    if($row>0)
    {
        echo "<script>alert('Bu Kullanıcı Adı ile Kayıt Olunmuş. Şifre Sıfırlama Sayfasına Yönlendiriliyorsunuz.');</script>";
    	echo "<script type='text/javascript'> document.location = 'sifre-kurtarma.php'; </script>";
    }
    
    $sql=mysqli_query($con,"select id from users where email='$email'");
    $row=mysqli_num_rows($sql);
    if($row>0)
    {
        echo "<script>alert('Bu E-Mail Adresi ile Kayıt Olunmuş. Şifre Sıfırlama Sayfasına Yönlendiriliyorsunuz.');</script>";
    	echo "<script type='text/javascript'> document.location = 'sifre-kurtarma.php'; </script>";
    }
    
    function tcno_dogrula($bilgiler){
    
        $gonder = '<?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
        <TCKimlikNoDogrula xmlns="http://tckimlik.nvi.gov.tr/WS">
        <TCKimlikNo>'.$bilgiler["tc"].'</TCKimlikNo>
        <Ad>'.$bilgiler["ad"].'</Ad>
        <Soyad>'.$bilgiler["soyad"].'</Soyad>
        <DogumYili>'.$bilgiler["dogum"].'</DogumYili>
        </TCKimlikNoDogrula>
        </soap:Body>
        </soap:Envelope>';
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,            "https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx" );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt($ch, CURLOPT_POST,           true );
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POSTFIELDS,    $gonder);
        curl_setopt($ch, CURLOPT_HTTPHEADER,     array(
        'POST /Service/KPSPublic.asmx HTTP/1.1',
        'Host: tckimlik.nvi.gov.tr',
        'Content-Type: text/xml; charset=utf-8',
        'SOAPAction: "http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula"',
        'Content-Length: '.strlen($gonder)
        ));
        $gelen = curl_exec($ch);
        curl_close($ch);
        return strip_tags($gelen);
        }
    
        $bilgiler = array(
            "ad"    => $ad,
            "soyad" => $soyad,
            "dogum"   => $dogum,
            "tc"  => $tc
        );
    
        $sonuc = tcno_dogrula($bilgiler);
    
        if($sonuc!="true"){
    		echo "<script>alert('Lütfen Doğru Kimlik Bilgileri Giriniz!');</script></center></h4>";
        }else{
    
        $msg=mysqli_query($con,"insert into users(ad,soyad,tc,dogum,kullanici,email,password,durum) values('$ad','$soyad','$tc','$dogum','$kullanici','$email','$password','1')");
    
    if($msg)
    {
        echo "<script>alert('Kayıt Başarılı');</script>";
        echo "<script type='text/javascript'> document.location = 'index.php'; </script>";
    }
    }
    }
  • 29-10-2021, 12:53:27
    #2
    echolattığınız yönlendirme kodlarının altlarına exit; eklemelisiniz. Die fonksiyonunu da araştırabilirsiniz.
  • 29-10-2021, 13:02:41
    #3
    kodunu düzeltmek lazım ama şimdi onunla uğraşamıyorum mobildeyim begintransaction başlat kayıt başarılı ise sql isteğini commit edersin başarısız ise rollback ile geri döndürürsün böylece veritabanına kayıt eklenmez. Ama tabi kodunun kullanım şekli çok yanlış şu an işin çözülsün diye rahat yapabileceğin bir çözüm söylüyorum.
  • 29-10-2021, 13:11:47
    #4
    metehandemir adlı üyeden alıntı: mesajı görüntüle
    echolattığınız yönlendirme kodlarının altlarına exit; eklemelisiniz. Die fonksiyonunu da araştırabilirsiniz.
    exit; ekleyince veritabanına eklme yapmıyor şuan teşekkürler.

    aydntech adlı üyeden alıntı: mesajı görüntüle
    kodunu düzeltmek lazım ama şimdi onunla uğraşamıyorum mobildeyim begintransaction başlat kayıt başarılı ise sql isteğini commit edersin başarısız ise rollback ile geri döndürürsün böylece veritabanına kayıt eklenmez. Ama tabi kodunun kullanım şekli çok yanlış şu an işin çözülsün diye rahat yapabileceğin bir çözüm söylüyorum.
    exit; kullanarak çözüldü şuan sanırım teşekkürler