• 14-06-2024, 16:26:28
    #1
    Arkadaşlar elinde PHP ile hazırlanmış bir T.C. Kimlik Doğrulama fonksiyonu olan varsa benimle paylaşabilir mi? En son kullandığım bir fonksiyon şuan için hata vermekte biraz aciliyeti var eğer bu şekilde bir kullanım yapan arkadaşlardan ricam paylaşırlarsa duacıları olurum gerçekten. Şimdiden teşekkür ederim yardımcı olacak arkadaşlara
  • 14-06-2024, 16:29:14
    #2
    function kimlikNoDogrula($kimlikNo) {
        // Kimlik numarasının 11 haneli olup olmadığını kontrol et
        if(strlen($kimlikNo) != 11)
            return false;
    
        // Tüm karakterlerin rakam olup olmadığını kontrol et
        if(!ctype_digit($kimlikNo))
            return false;
    
        // İlk rakam 0 olamaz
        if($kimlikNo[0] == 0)
            return false;
    
        // Kimlik numarası algoritması
        $ilk9Basamak = substr($kimlikNo, 0, 9);
        $ilk10BasamakToplam = 0;
    
        for($i = 0; $i < 9; $i++) {
            $ilk10BasamakToplam += $ilk9Basamak[$i] * (10 - $i);
        }
    
        $ilk10BasamakKontrol = $ilk10BasamakToplam % 11;
    
        if($ilk10BasamakKontrol == 10) {
            $ilk10BasamakKontrol = 0;
        }
    
        // 10. basamak kontrolü
        if($kimlikNo[9] != $ilk10BasamakKontrol)
            return false;
    
        // 11. basamak kontrolü
        $sonBasamakToplam = 0;
    
        for($i = 0; $i < 10; $i++) {
            $sonBasamakToplam += $kimlikNo[$i];
        }
    
        if($sonBasamakToplam % 10 != $kimlikNo[10])
            return false;
    
        // Geçerli kimlik numarası
        return true;
    }
    
    // Test
    $kimlikNo = "12345678901"; // Geçerli bir kimlik numarası
    if(kimlikNoDogrula($kimlikNo)) {
        echo "Kimlik numarası geçerli.";
    } else {
        echo "Kimlik numarası geçersiz.";
    }
    chatGPT sağolsun. umarım işine yarar.
  • 14-06-2024, 16:31:53
    #3
    NVI sistemi üzerinden bir doğrulama yapan fonksiyona ihtiyacım var aslında kullanıcının adı soyadı doğum tarihi ve tc sorgulaması yapacak şekilde olması gereklidir.
  • 14-06-2024, 16:53:35
    #4
    iyovi adlı üyeden alıntı: mesajı görüntüle
    NVI sistemi üzerinden bir doğrulama yapan fonksiyona ihtiyacım var aslında kullanıcının adı soyadı doğum tarihi ve tc sorgulaması yapacak şekilde olması gereklidir.
    MERNİS bahsettiğiniz özellik için api sağlıyor hocam.
  • 14-06-2024, 17:01:32
    #5
    NSDevelopment adlı üyeden alıntı: mesajı görüntüle
    MERNİS bahsettiğiniz özellik için api sağlıyor hocam.
    Bir döküman linki vs. paylaşır mısınız? Şuan onların paylaşmış olduğu bir link var aslında https://tckimlik.nvi.gov.tr/Service/...imlikNoDogrula lakin burada istek atınca şuan postman üzerinden çalışmıyor robot meselesi çıkarmışlar sanırım ona takılıyor ilginç şekilde maks 1 saat öncesine kadar çalışıyordu. Sanırım bir ufak güncelleme getirdiler sistemlerine sizlerde deneyebilirsiniz.
  • 14-06-2024, 17:20:42
    #6
    iyovi adlı üyeden alıntı: mesajı görüntüle
    Bir döküman linki vs. paylaşır mısınız? Şuan onların paylaşmış olduğu bir link var aslında https://tckimlik.nvi.gov.tr/Service/...imlikNoDogrula lakin burada istek atınca şuan postman üzerinden çalışmıyor robot meselesi çıkarmışlar sanırım ona takılıyor ilginç şekilde maks 1 saat öncesine kadar çalışıyordu. Sanırım bir ufak güncelleme getirdiler sistemlerine sizlerde deneyebilirsiniz.
    Hocam doğrudur dediğiniz birkaç sene öncesinde Engin Demiroğ'un videosunda görmüştüm oradan aklımda kalmış
  • 14-06-2024, 18:06:48
    #7
    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["tcno"].'</TCKimlikNo>         <Ad>'.$bilgiler["isim"].'</Ad>         <Soyad>'.$bilgiler["soyisim"].'</Soyad>         <DogumYili>'.$bilgiler["dogumyili"].'</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( "isim"      => "ALİ ATA", "soyisim"   => "BAK", "dogumyili" => "xxxx", "tcno"      => "xxxxx" );
    $sonuc = tcno_dogrula($bilgiler); if($sonuc=="true"){ echo "Doğrulama başarılı"; }else{ echo "Doğrulama başarısız"; }
  • 14-06-2024, 18:17:31
    #8
    ntka adlı üyeden alıntı: mesajı görüntüle
    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["tcno"].'</TCKimlikNo>         <Ad>'.$bilgiler["isim"].'</Ad>         <Soyad>'.$bilgiler["soyisim"].'</Soyad>         <DogumYili>'.$bilgiler["dogumyili"].'</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( "isim"      => "ALİ ATA", "soyisim"   => "BAK", "dogumyili" => "xxxx", "tcno"      => "xxxxx" );
    $sonuc = tcno_dogrula($bilgiler); if($sonuc=="true"){ echo "Doğrulama başarılı"; }else{ echo "Doğrulama başarısız"; }
    Daha temiz olması açısından sizin kodların üzerinden ilerleme yaparak POSTMAN üzerinden kontrol ettiğimde gayet güzel ve başarılı sonuç elde ettim aşağıda fonksiyonları ve response görüntüsünü paylaşıyorum kullanmak isteyen arkadaşlar olursa gayet sağlıklı şekilde çalışıyor kontrol edebilirsiniz.

    <?php
    
    function NVITCSorgula($bilgiler = array()) {
        $curl = curl_init();
    
        curl_setopt_array($curl, array(
          CURLOPT_URL => 'https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx',
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => '',
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 0,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => 'POST',
          CURLOPT_POSTFIELDS =>'<?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['TCKimlikNo'].'</TCKimlikNo>
              <Ad>'.$bilgiler['Ad'].'</Ad>
              <Soyad>'.$bilgiler['Soyad'].'</Soyad>
              <DogumYili>'.$bilgiler['DogumYili'].'</DogumYili>
            </TCKimlikNoDogrula>
          </soap:Body>
        </soap:Envelope>',
          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"',
            'Cookie: TS0193588c=01e4b30442ae308bf9bb635dc7895298e8f2d382b1f484a1209cb70726a4888c12c705b7ed57df13477e3ae27f77feafa66b531bab'
          ),
        ));
    
        $response = curl_exec($curl);
    
        curl_close($curl);
        echo $response;
    
    }
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Body>
            <TCKimlikNoDogrulaResponse xmlns="http://tckimlik.nvi.gov.tr/WS">
                <TCKimlikNoDogrulaResult>true</TCKimlikNoDogrulaResult>
            </TCKimlikNoDogrulaResponse>
        </soap:Body>
    </soap:Envelope>
  • 14-06-2024, 19:31:48
    #9
    <?php
    
    function tcKimlikDogrula($tcKimlikNo, $ad, $soyad, $dogumYili) {
        $soapUrl = "https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx";
        $soapAction = "http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula";
        $xml_post_string = '<?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>' . $tcKimlikNo . '</TCKimlikNo>' .
            '<Ad>' . $ad . '</Ad>' .
            '<Soyad>' . $soyad . '</Soyad>' .
            '<DogumYili>' . $dogumYili . '</DogumYili>' .
            '</TCKimlikNoDogrula>' .
            '</soap:Body>' .
            '</soap:Envelope>';
        $headers = array(
            "Content-type: text/xml;charset=\"utf-8\"",
            "Accept: text/xml",
            "Cache-Control: no-cache",
            "Pragma: no-cache",
            "SOAPAction: $soapAction",
            "Content-length: " . strlen($xml_post_string),
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $soapUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
        $response = curl_exec($ch);
        curl_close($ch);
        $doc = new DOMDocument();
        $doc->loadXML($response);
        $result = $doc->getElementsByTagName("TCKimlikNoDogrulaResult")->item(0)->nodeValue;
        return $result == "true";
    }
    $tcKimlikNo = "";
    $ad = "";
    $soyad = "";
    $dogumYili = ;
    $result = tcKimlikDogrula($tcKimlikNo, $ad, $soyad, $dogumYili);
    if ($result) {
    //KİMLİK BİLGİLERİ DOĞRU İSE
        echo "true";
    } else {
    //KİMLİK BİLGİLERİ DOĞRU DEĞİL İSE
    }
    ?>