• 05-08-2012, 02:13:11
    #1
    Üyeliği durduruldu
    Eğer büyük bir proje geliştirecekseniz ya da gerçekten önemli bir proje geliştiriyorsanız kullanıcılarınızın doğrulama işlemi gerçekten önemli bir hal alır. E-posta vb. doğrulama bizi bir yere kadar idare eder fakat artık bazı büyük firmalar doğrulamalarda T.C. Kimlik No istemeye başladı. T.C. kimlik numarasını doğrudan kontrol etme imkanımız yok maalesef(en azından ücretsiz yok). Ama bilindiği üzere T.C. kimlik numarasında bulunması gereken belli nitelikler var ve bu niteliklere göre kontrol edebiliriz.

    T.C. Kimlik Numarasında Bulunması Gereken Özellikler

    T.C. kimlik numaraları 11 hanedir ve tamamı rakamsal değerlerden oluşur.
    T.C. kimlik numarasının ilk hanesi sıfır(0) olamaz.
    1. 3. 5. 7. ve 9. hanelerin toplamının 7 ile çarpımından 2. 4. 6. ve 8. haneler çıkartıldığında geriye kalan sayının 10′a göre modu bize 10. haneyi verir.
    1. 2. 3. 4. 5. 6. 7. 8. 9. 10. hanelerin toplamının 10′a göre modu bize 11. haneyi verir.

    Geçenlerde bir arkadaş sorunca arşivimi karıştırdım. Ve aşağıda paylaştığım, yukarıdaki kriterlere göre verilen numarayı kontrol eden , geçerli bir T.C. kimlik numarası olup olmadığını bize söyleyen fonksiyonu buldum. Her ne kadar kesin bir çözüm olmasa da T.C. kimlik numarasının algoritmasını bilmeyenleri engeller.

    Php İle T.C. Kimlik No Doğrulama Fonksiyonu

    <?php 
    function tckimlik($tckimlik){ 
        $olmaz=array('11111111110','22222222220','33333333330','44444444440','55555555550','66666666660','7777777770','88888888880','99999999990'); 
        if($tckimlik[0]==0 or !ctype_digit($tckimlik) or strlen($tckimlik)!=11){ return false;  } 
        else{ 
            for($a=0;$a<9;$a=$a+2){ $ilkt=$ilkt+$tckimlik[$a]; } 
            for($a=1;$a<9;$a=$a+2){ $sont=$sont+$tckimlik[$a]; } 
            for($a=0;$a<10;$a=$a+1){ $tumt=$tumt+$tckimlik[$a]; } 
            if(($ilkt*7-$sont)%10!=$tckimlik[9] or $tumt%10!=$tckimlik[10]){ return false; } 
            else{  
                foreach($olmaz as $olurmu){ if($tckimlik==$olurmu){ return false; } } 
                return true; 
            } 
        } 
    } 
    if(tckimlik('11111111110')){ echo 'Tc Kimlik Numarası doğru!'; } else { echo 'Lütfen geçerli bir Tc Kimlik Numarası giriniz...'; } 
    ?>
    Kaynak: http://www.ahmetiscan.web.tr/php-ile...ma-fonksiyonu/
  • 05-08-2012, 11:15:49
    #2
    Hocam bu fonksiyon sadece tc no olup olmadığını doğruluyor. İsim kontrolü yaparsa daha kullanışlı olabilirmiş.
  • 07-08-2012, 13:07:19
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Tşkler Güzel paylaşım.
  • 07-08-2012, 13:45:07
    #4
    ByReD adlı üyeden alıntı: mesajı görüntüle
    Tşkler Güzel paylaşım.
    Açılışı yaptın bakalım. Sen bugün akşama 100 mesaj yaparsın.
  • 07-08-2012, 16:15:10
    #5
    Üyeliği durduruldu
    Ücretsiz API ile kontrol edebilirsiniz.SOAP ve bazı izinler gerektirir

    https://kpsbasvuru.nvi.gov.tr/Kps.aspx
  • 07-08-2012, 18:22:09
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    uNFearLesS adlı üyeden alıntı: mesajı görüntüle
    Ücretsiz API ile kontrol edebilirsiniz.SOAP ve bazı izinler gerektirir
    https://kpsbasvuru.nvi.gov.tr/Kps.aspx
    soap ile yapılabilir örneği bu gece yapar koyarım.web servisinin adresi ; https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx
  • 07-08-2012, 19:26:00
    #7
    Üyeliği durduruldu
    http://psikiatri.net/tckimlik.php


    Buda biraz daha kolaylaştırılmış hali

    Direk kontrol edebilirsiniz.


    <?php  
    function tckimlik($tckimlik){  
        $olmaz=array('11111111110','22222222220','33333333330','44444444440','55555555550','66666666660','7777777770','88888888880','99999999990');  
        if($tckimlik[0]==0 or !ctype_digit($tckimlik) or strlen($tckimlik)!=11){ return false;  }  
        else{  
            for($a=0;$a<9;$a=$a+2){ $ilkt=$ilkt+$tckimlik[$a]; }  
            for($a=1;$a<9;$a=$a+2){ $sont=$sont+$tckimlik[$a]; }  
            for($a=0;$a<10;$a=$a+1){ $tumt=$tumt+$tckimlik[$a]; }  
            if(($ilkt*7-$sont)%10!=$tckimlik[9] or $tumt%10!=$tckimlik[10]){ return false; }  
            else{   
                foreach($olmaz as $olurmu){ if($tckimlik==$olurmu){ return false; } }  
                return true;  
            }  
        }  
    }  
    
    $xs = $_GET['tc'];
    if($xs){
    if(tckimlik($xs)){ echo 'Tc Kimlik Numarası doğru!'; } else { echo 'Lütfen geçerli bir Tc Kimlik Numarası giriniz...'; }  }
    ?>
    
    <form action="" method="GET">
    TC Kimlik Numarası: <input type="text" name="tc" />
    <input type="submit" value="Kontrol Et" />
    </form>
  • 07-08-2012, 19:28:48
    #8
    soap ile hazırlamıştım ben de zamanında
    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);
    }
    kullanımı:
    $bilgiler = array(
    "isim"      => "ÇAĞLAYAN",
    "soyisim"   => "ÇAKIR",
    "dogumyili" => "19xx",
    "tcno"      => "xxxxxxxxxxx"
    );
    $sonuc = tcno_dogrula($bilgiler);
    if($sonuc=="true"){
    echo "Doğrulama başarılı";
    }else{
    echo "Doğrulama başarısız";
    }
    kaynak: http://caqlayan.com/php-curl-ile-tc-...ili-dogrulama/
  • 07-07-2014, 02:06:07
    #9
    Mrb bu form için isim tc no doğrulaması yapabilirmisiniz? Tesekkürler