by Uğur Çelenk
24. Şubat 2008 09:24
Eskiden webservice kullanarak tc kimlik numarasını kolaylıkla sorgulayabiliyorduk ama artık sorgulamak hem paralı(sorgulama başı 10kuruş sanırm) hem de bir takım prosedürler gerektiriyor.
Eğer sorgulama başına para ödemek istemiyorsanız, aşağıda yazmış olduğum kodu kullanarak %90lık bir oranla, girilen tc kimlik numarasının, doğru bir tc kimlik numarası olduğunu bulabilirsiniz..
Öncelikle kontrolün nasıl çalıştığından bahsedelim;
İlk 10 sayının toplamının birler basamağı, 11. karaktere eşit olması durumunda TC Kimlik numarası geçerli bir numaradır (Kendi Tc kimlik numaranız ile deneyebilirsiniz)
Örnek : Tc Kimlik No olarak 01234567895 alalım
ilk 10 rakamı toplayalım --> Sonuç 45
45 sayısının birler basamağındaki rakam : 5
Tc kimlik numarasının son rakamı : 5
Kullanmanız gereken fonksiyon ise :
public static Boolean TcKimlikKontrol(String kimlikNo)
{
Tc = kimlikNo;
int no = 0;
no = no + Convert.ToInt32(Tc.Substring(0, 1));
no = no + Convert.ToInt32(Tc.Substring(1, 1));
no = no + Convert.ToInt32(Tc.Substring(2, 1));
no = no + Convert.ToInt32(Tc.Substring(3, 1));
no = no + Convert.ToInt32(Tc.Substring(4, 1));
no = no + Convert.ToInt32(Tc.Substring(5, 1));
no = no + Convert.ToInt32(Tc.Substring(6, 1));
no = no + Convert.ToInt32(Tc.Substring(7, 1));
no = no + Convert.ToInt32(Tc.Substring(8, 1));
no = no + Convert.ToInt32(Tc.Substring(9, 1));
string son = Convert.ToString(no).Substring(1, 1);
if (son == Tc.Substring(10, 1))
{return true;}
else{return false;}
}
Örnek kullanım: TcKimlikKontrol(01234567895) // true dönerse doğru, false dönerse hatalı bir kimlik numarasıdır.
(Algoritmayı kullanmadan önce, kullanıcının %10luk bir oranla bu rakamı tutturabilme ihtimalini gözönüne almayı unutmayınız (11 haneli bir rakam girdiğini varsayarsak))
(Not: Fonksiyonu çok eskiden yazmıştım,kodta düzenleme yapmadım. Tc kimlik numarasının elemanlarını bir array'e atıp, döngü ile toplama işlemini gerçekleştirebilirsiniz(önerilir) )