JavaScript TC Kimlik No Doğrulama

Kasım 16, 2016 2 Views
JavaScript TC Kimlik No Doğrulama cover tc Ayhan ALTINOK

Bazı projelerinizde TC kimlik numarasını kullanmamız gerektiği durumlar olmuştur. Böyle durumlarda  sunucuyu yormadan anlık doğrulama yapmak hem sizin  hemde sucunuzun iş yükünü azaltmak için JavaScript kullanarak anlık doğrulama hazırlayabilirsiniz. TC kimlik numaraları belli bir algoritma ile hazırlanmaktadır.

T.C. Kimlik numarası algoritması

11 haneden oluşan numaraların iki bölümü bulunuyor. aslında kimlik numarası ilk 9 hane. numaranın son iki hanesi ise, ilk dokuz hanenin “sağlamasını” yapıyor. çeşitli algoritma hesaplarıyla ortaya çıkan bu rakamın “tek sayı” olması, “matematik” olarak mümkün değil.

kimlik numaralarının son 2 harfi, sadece ilk 9 rakamının doğrulayıcısı konumundadır. yani asıl numaramız ilk 9 rakamdadır. t.c. kimlik numaraları 11 basamaktan oluşmaktadır. ilk 9 basamak arasında kurulan bir algoritma bize 10. basamağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.

+ ilk hane 0 olamaz.
* t.c. kimlik numaralarımızın 1. 3. 5. 7. ve 9. hanelerinin toplamının 7 katından, 2. 4. 6. ve 8. hanelerinin 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.

örneğin 10. rakamı bulalım:
10562272296 bu numaraya uygulayalım.
1+5+2+7+2=17 17*7=119 119-10=109 109’u 10’a böldüğümüzde kalan 9 çıkar ve bu da 10. rakamı bize doğrular. 10562272296

şimdi geldik 11. rakama:
1+0+5+6+2+2+7+2+2+9=36 36’nın 10’a bölümünden kalan 6’dır. bu da bize son rakamı doğrular. 10562272296

siz de, kendi kimlik numaranızda uygulayarak sonuca varabilirsiniz.

 

T.C. Kimlik numarası algoritmasını öğrendiğimize göre uygulamaya geçelim.

T.C. kimlik doğrulama fonksiyonumuz


var checkTcNum = function(value) {
  // Gelen verimizi string bir değere çevirelim
  value = value.toString();
  // 0 - 9 sayısal değer ve 11 haneli olup olmadığını kontrol edelim
  var isEleven = /^[0-9]{11}$/.test(value);
  // totalX adında 0 değerine sahip değişken oluşturalım 
  var totalX = 0;
  // For döngüsü kullanarak 0'dan başlayıp 10'a kadar 1 arttıralım
  for (var i = 0; i < 10; i++) {
    // Her döngüde totalX değerine ekleyelim
    totalX += Number(value.substr(i, 1));
  }
  // isRuleX değişkeni oluşturup mod10 değerini atayalım
  var isRuleX = totalX % 10 == value.substr(10,1);
  // totalY1 ve totalY2 değişkenlerini oluşturalım
  var totalY1 = 0;
  var totalY2 = 0;
  // totalY1 için For döngüsü başlatalım 
  for (var i = 0; i < 10; i+=2) {
    // Her döngüde totalY1 değerine ekleyelim
    totalY1 += Number(value.substr(i, 1));
  }
  // totalY2 için For döngüsü başlatalım 
  for (var i = 1; i < 10; i+=2) {
    // Her döngüde totalY2 değerine ekleyelim
    totalY2 += Number(value.substr(i, 1));
  }
  /*
   1 - totalY1 atadığımız değeri 7 ile çarpalım 
   2 - çıkan sonucu totalY2 değerine atadığımız değişkeninden çıkartalım 
   3 - çıkan sonucu mod10 'nunu alalım
   4 - çıkan sonucu 10 değer ile eşit mi diye kontrol edelim
  */
  var isRuleY = ((totalY1 * 7) - totalY2) % 10 == value.substr(9,0);
  // sonucunu alalım
  return isEleven && isRuleX && isRuleY;
};

Değer girişi kısıtlama fonksiyonumuz


function limitText(field, maxChar){
    // Değişkenlerimiz
    var ref = $(field),  
        val = ref.val();  
    // Kaç karakter olduğunu sayalım ve 11 karakterden büyük mü diye kontrol edelim
    if ( val.length >= maxChar ){
        ref.val(function() { 
            // sonucu yazdıralım
            return val.substr(0, maxChar);       
        });
    }
  }

Hazırladığımız fonksiyonları kullanalım


  // Java Script on fonksiyonunu ile  "keyup focus blur load ""  methodlarını kullarak olayları yakalayalım
  $('#TCNoControl input').on('keyup focus blur load', function(event) { 
      // elemanımız
      event.preventDefault();
      // limit kontrolü yapalım
      limitText(this, 11)
      // sonuçlarını yazdıracağımız değişkenimiz
      var result = $('#TCNoControl .result');
      // sonuç elemanınımızı temizleyelim
      result.removeClass('true').removeClass('false');
      // T.C. kimlik kontrolümüzü yapalım değişkene atayalım
      var isValid = checkTcNum($(this).val()); 
      // T.C. kimlik fonksiyonumuzdan gelen değeri kontrol edelim
      if (isValid) {
        result.addClass('true').text("✓ TC kimlik numarınız doğrulandı.");
      }
      else {
        result.addClass('false').text("✘ Geçersiz TC kimlik numarası girdiniz.");
      }
    });

html kodlarımız


<div id="TCNoConrol">
  <input type="number">
  <span class="result"></span>
</div> 

Görünüşünü geliştirelim


/* TC No Control Style */
#TCNoControl{position:relative;}
#TCNoControl input::-webkit-outer-spin-button,
#TCNoControl input::-webkit-inner-spin-button {  -webkit-appearance: none;  margin: 0;} 
#TCNoControl input[type=number] {  -moz-appearance: textfield;}
#TCNoControl .result{font-size:14px;color:#fff;display:none;padding:10px 15px;margin-top:10px;width:100%; letter-spacing:initial;text-transform:initial;}
#TCNoControl .result.true,#TCNoControl .result.false{display:block;}
#TCNoControl .result.true{background-color:#8bc34a;}
#TCNoControl .result.false{background-color:#f44336;} 

Önizleme

Html Etiketleri ve Anlamları html tags Ayhan ALTINOK

Html Etiketleri ve Anlamları

Front-end kodlamaya yeni başladıysanız Html etiketlerini ve anlamlarını bilmek size büyük fayda sağlayacaktır. Html5 ile gelen etiketleride bulubilirsiniz. Olabildiğince sadece ifadeler kullarak sizin için tanımlaya çalışayım. Html dili ile…

WordPress Logo Ekleme Nasıl Yapılır? blog cover logo support 1 Ayhan ALTINOK

WordPress Logo Ekleme Nasıl Yapılır?

Wordpress sitenize logo eklemek artık çok kolay eğer wordpress 4.5 üstü site kullanıcıları fonksiyon.php dosyasına bir iki düzenleme ile kullanabilirsiniz. Geliştirici olması gerekmeyen WordPress kullanıcıları, web sitelerini her…

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorum Yaz
Yukarı Kaydır
Beni takip edin
Tema
Diller
Müzik
Search results will appear here