TC Kimlik no ile ilgili geliştirme yaptığımız uygulamalarda kullanıcı boş geçebiliyor veya saçma tc kimlik numarası girebiliyorlar ama sizde işlemlerinizi tc kimlik no üzerinden yaptığınızda karışıklıklara sebep olabiliyor.
Javascript TC Kimlik No Doğrulama Algoritması
- TC Kimlik numaraları 11 basamaktan oluşmaktadır. İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
- 11 hanelidir.
- Her hanesi rakamsal değer içerir.
- İlk hane 0 olamaz.
- 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10′a bölümünden kalan, yani Mod10′u bize 10. haneyi verir.
- 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10′a bölümünden kalan, yani Mod10′u bize 11. haneyi verir.
Javascript Kodu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function check_tcno(a){ if(a.substr(0,1)==0 || a.length!=11){ return false; } var i = 9, md='', mc='', digit, mr=''; while(digit = a.charAt(--i)){ i%2==0 ? md += digit : mc += digit; } if(((eval(md.split('').join('+'))*7)-eval(mc.split('').join('+')))%10!=parseInt(a.substr(9,1),10)){ return false; } for (c=0;c<=9;c++){ mr += a.charAt(c); } if(eval(mr.split('').join('+'))%10!=parseInt(a.substr(10,1),10)){ return false; } return true; } |
Merhaba bu fonksiyon bazi durumlarda hatalı çalışıyor söyleki
1,3,5,7,9 basamaklarının toplamının 7 katından 2,4,6,8 in toplamını çıkartığımızda negatif bir değer alıyorsa benim tcnom da bu değer -1 oluyor javascript mod işlemini -1 olarak veriyor oysaki negatif -1 in mod işlemi 9 olmalı
yazdığınız script bir cok banka ve sigorta şirketinin yazılımında da kullanıldığından tckimlik doğrulaması yapamıyorum fonksiyonun mod 10 işlemi kısmına negatif kontrolu koyarak güncelleme yayınlayabilir seniz sevinirim.