• 30-11-2009, 16:07:50
    #1
    Merhaba arkadaşlar. Gecen gun bir web sitesi için lazım olduğu için yazmıştım. Belki işinizi görür diye eklemek istedim. TC Kimlik numarasının dogrulama algoritmasını bilmeyenler için aşağıda bilgileri bulunmakta.

    * 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.


    Buna istinaden Php ile aşağıdaki kodu yazdım. Guzel bir sekilde calısmakta. Sitenizin herhangı bır yerınde kullanıcılarınızdan TC kimlik numarası ıstıyor ve bunun dogrulugunu kontrol etmek istiyorsanız bunu kullanabilirsiniz. Biraz acele lazım oldugu için aklıma gelen ilk mantık ile yazdım. Geliştirilebilir.


    <?php
    if (!$_POST) {
    ?>
    <form action="<? $PHP_SELF;?>" method="post">
    <input name="tc" type="text">
    <input name="gonder" type="submit" value="Sorgula"/>
    </form>
    <?
    } else {
    $tc = $_POST[tc];
    $t1 = substr($tc,0,1);
    $t2 = substr($tc,1,1);
    $t3 = substr($tc,2,1);
    $t4 = substr($tc,3,1);
    $t5 = substr($tc,4,1);
    $t6 = substr($tc,5,1);
    $t7 = substr($tc,6,1);
    $t8 = substr($tc,7,1);
    $t9 = substr($tc,8,1);
    $t10 = substr($tc,9,1);
    $t11 = substr($tc,10,1);
    $say = strlen($tc);
    if (empty($tc)) {
    echo "Lütfen TC kimlik numaranızı giriniz!"."<br/>";
    } else if  ($t1 == 0) {
    echo "TC Numaranızın İlk rakamı 0 olamaz!"."<br/>";
    } else if ($say != 11) {
    echo "TC Kimlik numarası 11 haneden oluşmaktadır"."<br/>";
    } else {
    $ilk = (($t1+$t3+$t5+$t7+$t9)*7-($t2+$t4+$t6+$t8))%10;
    $son = ($t1+$t2+$t3+$t4+$t5+$t6+$t7+$t8+$t9+$t10)%10;
    if ($ilk == $t10 && $son == $t11) {
    echo "<font color='#669900'>TC Kimlik Numarası Dogru</font>";
    } else {
    echo "<font color='#FF0000'>TC Kimlik Numarası Yanlış</font>";
    }
    }}
    ?>
  • 30-11-2009, 16:15:09
    #2
    Üyeliği durduruldu
    Mantığıyla beraber paylaştığın için çok teşekkürler.
  • 30-11-2009, 16:19:14
    #3
    Üyeliği durduruldu
    bende öğrenmiş oldum teşekkürler
  • 30-11-2009, 16:21:59
    #4
    alıntı değil mi bu?

    aynısını aylar önce zone da mı ne görmüştüm yada iyinette.
  • 30-11-2009, 16:32:03
    #5
    Hayır Alıntı degil arkadaslar. Tamamen kendı yazdıgım kodlar. Baska yerde buna benzer seyler yayınlanmıs olabilir. Alıntı olan tek yer TC kimlik no dogrulama algoritması acıklaması. Kodlar tamamen kendıme ait.
  • 30-11-2009, 16:32:40
    #6
    farklı bir algoritma.

    TC Kimlik numaramız 11 basamaklı ve her bir rakamı kn ile ifade edelim(n€N)

    TC no: k1k2k3k4k5k6k7k8k9k10k11 olsun.
    tekler = k1+k3+k5+k7+k9
    çiftler = k2+k4+k6+k8 (dikkat k10 yok!)

    TC kimlik numarasının son iki basamağı (k10 ve k11) kontrol amaçlıdır. Şimdi o kontrolü yapmak için aşağıdaki işlemler yapılır:

    t1 = (tekler*3)+çiftler
    c1 = (10 - (t1 mod10))mod10
    t2 = c1 + çiftler
    t3 = (t2*3)+tekler
    c2 = (10 - (t3 mod10))mod10

    Eğer,
    c1 = k10 (yani Tc nonun 10.basamağı) ve c2=k11 (yani son basamak)
    ozaman bu TC kimlik numarası geçerlidir denir.

    Numan GÖÇERİ'ye teşekkürler.
  • 30-11-2009, 16:34:06
    #7
    Yoo ben onu okumadım hic Cyrax. Dedigim gibi aceleyle lazım oldugu için boyle bır mantıkla yazdıydım. Ki zaten kodlara bakarsan birbirinden farklı oldugunu goreceksin. Mantık olarakta kod olarakta alıntı degil yani.
  • 30-11-2009, 16:35:00
    #8
    Erturk adlı üyeden alıntı: mesajı görüntüle
    Yoo ben onu okumadım hic Cyrax. Dedigim gibi aceleyle lazım oldugu için boyle bır mantıkla yazdıydım. Ki zaten kodlara bakarsan birbirinden farklı oldugunu goreceksin. Mantık olarakta kod olarakta alıntı degil yani.
    ya tamam ben başka bir algoritma verdim orada, anladık kodlar senin yazımın

    verdiğim yazıda 2. kısım farklı bir algoritma.
  • 30-11-2009, 16:35:56
    #9
    Cyrax adlı üyeden alıntı: mesajı görüntüle
    ya tamam ben başka bir algoritma verdim orada, anladık kodlar senin yazımın
    Bunu zaten "Ben yazdım Ben yazdım Heyooo Ben Yazdım" diye soylemedim