Javascript ile TC kimlik no doğrulama

Ceviz forumda okudum. “TC kimlik numarasının ilk 10 rakamının toplamının verdiği sonucun 1′ler basamağı 11. sayıya eşitir.” bunun için bir javascript kodu yazdım. Sizlerede lazım olur diye buraya yazıyorum.

javascript kodu:

function tckimlikkontorolu(tcno)
{
var tckontrol,toplam;
tckontrol = tcno;
tcno = tcno.value; 

toplam = Number(tcno.substring(0,1)) + Number(tcno.substring(1,2)) + Number(tcno.substring(2,3)) + Number(tcno.substring(3,4)) + Number(tcno.substring(4,5)) + Number(tcno.substring(5,6)) + Number(tcno.substring(6,7)) + Number(tcno.substring(7,8)) + Number(tcno.substring(8,9)) + Number(tcno.substring(9,10)); 

strtoplam = String(toplam); 

onunbirlerbas = strtoplam.substring(strtoplam.length, strtoplam.length-1); 

if(onunbirlerbas == tcno.substring(10,11))
{
	alert("doğru");
}
else{
	alert("yanlış");
}
}

html kodu:

<input name="tckimlikno" type="text" id="tckimlikno" onblur="tckimlikkontorolu(this);" maxlength="11" />

Ben bu kodu blur ile tetikledim siz bunu değiştirebilirsiniz. Çalışan kodu görmek için tıklayınız.

16 Yorum (Yorum Ekle)

  • Ümit KARADUAMN diyor ki:

    Bu algoritma tek başına doğrulama işlemini yapamaz. 2. bir algoritma daha çalıştırılması gerekir.

    2. Algoritma Formülü : 1. 3. 5. 7. ve 9. basamaklarının sayı değerleri toplamının 7 katından, 2. 4. 6. ve 8. basamaklarının sayı değerleri toplamı çıkartılır. Elde edilen sonucun 10′a bölümünden kalan(yani mod10) kimlik numaralarımızın 10. basamağına eşittir. (bu arada çıkarma sonucunda bulunan rakam negatif ise 10 ile toplanır)

  • aib diyor ki:

    son yazdigimi bosverelim, javascript integer'lari 32-bit oldugundan 2.kusur milyardan sonrasini seyetmiyor.

  • aib diyor ki:

    Boyle de olur tabi:

    function(value)
    {
    var sum = 0;
    var lastDigit = value % 10;

    for (var i=0; i<10; ++i) {
    value = (value / 10) | 0; //integer division
    sum += value % 10;
    }
    return (sum % 10 == lastDigit);
    }

  • Emrah Olgun diyor ki:

    Substring alarak şu şekilde daha iyi olur:
    function(value) {
    var lastDigit = value % 10;
    var sum = 0;
    for (var i=0; i<10; ++i) {
    sum += Number(value.substring(i,i+1));
    }
    var checksumDigit = sum%10;
    return (checksumDigit == lastDigit);
    }

Yorum yaz

Format: Yorum içinde kullanılabilecek HTML kodları: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

?