Yücel Alkan

TC Kimlik Doğrulama

TC Kimlik No günümüzde websitelerinde yer alan başvuru formlarında istenen verilerden biri konumunda bulunuyor. Örneğin; yurt, burs veya iş başvuruları. Daha önce mail, ad soyad veya telefon formatı doğrulama işlemlerine artık TC Kimlik No'yu da eklemiş bulunuyoruz. 

TC Kimlik No format kontrolü yapmak için önce bu numaranın nasıl ve hangi kriterlerden oluştuğunu bilmemiz gerekiyor. Bize sıradan bir sayı gibi gelen TC Kimlik Numarasının özellikleri şu şekilde;

  • TC Kimlik No sadece sayılardan meydana gelir. Herhangi bir harf veya özel karakter barındırmaz.
  • TC Kimlik No 11 haneden oluşur. 
  • TC Kimlik Numarasının ilk rakamı 0 olamaz. Yani bu sayı 0 ile başlamaz.
  • Basamaklar arasındaki ilk ilişki;
    • Bu sayının 1,3,5 ve 7. basamaklarındaki sayı toplanır ve 7 ile çarpılır.
    • Elde ettiğimizd değerden, 2,4,6 ve 8. basamaklarda yer alan değerlerin toplamı çıkarılır.
    • Son işlemde elde edilen sayı 10'a bölünür
    • Bölme işleminde elde ettiğimiz kalan, TC Kimlik Numarasının 11. basamağını verir.
  • Basamaklar arasındaki ikinci ilişki;
    • Bu sayının ilk on hanesi yani 1-10. hanelerde yer alan tüm rakamlar toplanır.
    • Elde edilen sayı 10'a bölünür.
    • Bölme işleminden elde edilen kalan, TC Kimlik Numarasının 11. basamağını verecektir.

Gerçekten de inanılmaz değil mi? Bu algoritmayı çıkaran arkadaşı tebrik etmek lazım. 

Gelelim biz asıl işimize, PHP'de TC Kimlik No format kontrolü yapmak için aşağıdaki fonksiyonu kullanabilirsiniz. Eğer fonksiyona gönderdiğiniz değer doğru bir TC Kimlik No ise size true değer döndürecektir, değilse tabi ki false değer döndürecektir. İşte fonksiyon;

function tcKimlikKontrol($tcKimlik=null)
    {
        // Girilen ifade sayı değilse 
        if(!ctype_digit($tcKimlik))
            return false;
        
        // Boşlukları ve soldaki sıfırı temizle
        $tcKimlik=trim($tcKimlik);
        $tcKimlik=trim($tcKimlik,"0");
        
        if(strlen($tcKimlik)!=11)
            return false;
        
        // TC Kimlik Format Kontrolü : 1-3-5-7-9. haneler toplamından, 2-4-6-8. haneleri çıkar
        // Elde edilen sayıyı 10'a böl, 
        // Kalan sayı TC Kimlik Numarasının 10. karakterini verecek
        $tekBasamaklar=0;
        $ciftBasamaklar=0;
        
        for($i=0; $i<=8; $i+=2)
            $tekBasamaklar+=$tcKimlik[$i];
        
        for($i=1; $i<=7; $i+=2)
            $ciftBasamaklar+=$tcKimlik[$i];
        
        if( ((7*$tekBasamaklar)-$ciftBasamaklar)%10!=$tcKimlik[9] )
            return false;
        
        // Format Kontrolü -2 : 1-10. haneler toplamının 10'a bölümünden kalan, 11. haneyi verecek
        $toplam=0;
        for($i=0; $i<=9; $i++)
            $toplam+=$tcKimlik[$i];
        
        if($toplam%10!=$tcKimlik[10])
            return false;
        else
            return true;
    }

Tanımlanan fonksiyonun kullanım şekli ise şu şekilde;

tcKimlikKontrol("11111111111");

Burada tamamen 1'lerden oluşan bölüme sorgulamak istediğiniz TC Kimlik No değerini girmeniz yeterli olacaktır. 

Aşağıdaki örnek ise if-else bloğu ile kullanımını içeriyor. 

if(tcKimlikKontrol("12345678910"))
   echo "TC Kimlik No Doğru";
else
   echo "TC Kimlik No Hatalı";

Bu konu ile ilgili görüş ve sorularını aşağıda yer alan yorum bölümüne yazabilirsiniz. En kısa zamanda cevaplamaya çalışacağım. 

Herkese hayırlı çalışmalar dilerim.

Yorumlar
Bu içeriğe henüz yorum yapılmamıştır. İlk yorum yapan siz olun!
Yorum Yapın