YAZILIM

PHP ile TC Kimlik Numarası Doğrulama

Salim S. - 20 Şubat 2020 - 277

TC kimlik numaraları belli bir algoritma ile oluşturulmaktadır. Bu algoritmayı bilirsek 11 basamaklı bir sayının gerçekten TC kimlik numarası mı olduğunu öğrenebilirsiniz.

TC kimlik numarası 11 basamaklıdır ve 0 ile başlamaz.

1. 3. 5. 7. ve 9. basamaklarının toplamının 7 ile çarpımından 2. 4. 6. ve 8. basamaklarını çıkartıyoruz. Elde ettiğimiz sonucu 10 ile modunu alıyoruz. (Yani 10'a bölüp kalanı buluyoruz.) Çıkan sonuç TC kimlik numarasının 10. basamağını oluşturuyor.

11. basamak ise 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. basamakları topluyoruz ve tekrar 10 ile modunu alıyoruz. Çıkan sonuç TC kimlik numaramızın 11. basamağıdır.

Şimdi bu algoritmayı öğrendiğimize göre PHP ile bu kontrolün nasıl yapıldığını aşağıda görebilirsiniz.

Öncelikle basit bir tc numarası almak için index.php adında bir dosya oluşturalım ve HTML ile bir form oluşturalım.

<form action="index.php" method="post">
<input type="text" name="tc" >
<input type="submit" value="GÖNDER">
</form>

Daha sonra bir php fonksiyonu oluşturuyoruz. Yukarıda anlattığım algoritmaya göre neler yaptığımı kodların yanında görebilsiniz.

function tcdogrula($tc){
	
	$bir=substr($tc, 0, 1);      //TC kimlik numarasının 1. rakamı aldım
	$iki=substr($tc, 1, 1);      //TC kimlik numarasının 2. rakamı aldım
	$uc=substr($tc, 2, 1);       //TC kimlik numarasının 3. rakamı aldım
	$dort=substr($tc, 3, 1);     //TC kimlik numarasının 4. rakamı aldım
	$bes=substr($tc, 4, 1);      //TC kimlik numarasının 5. rakamı aldım
	$alti=substr($tc, 5, 1);     //TC kimlik numarasının 6. rakamı aldım
	$yedi=substr($tc, 6, 1);     //TC kimlik numarasının 7. rakamı aldım
	$sekiz=substr($tc, 7, 1);    //TC kimlik numarasının 8. rakamı aldım
	$dokuz=substr($tc, 8, 1);    //TC kimlik numarasının 9. rakamı aldım
	$on=substr($tc, 9, 1);       //TC kimlik numarasının 10. rakamı aldım
	$onbir=substr($tc, 10, 1);	 //TC kimlik numarasının 11. rakamı aldım
	
	if(!is_numeric($tc)){
		return "TC rakamlardan oluşmalıdır.";	//Form ile post edilen değerin rakamlardan mı oluştuğunu kontrol ediyorum
	}
	else if(strlen($tc)!=11){
		return "TC 11 karakter olmalıdır.";	//Form ile post edilen değerin 11 haneli mi olduğunu kontrol ediyorum
	}
	else if($bir==0) {
		return "TC 0 ile başlayamaz"; //Form ile post edilen değerin 1. hanesinin 0 olup olmadığını kontrol ediyorum
	}
    else{		
		// Algoritmada anlattığım işlemleri yapıyorum.
	   $x=($bir+$uc+$bes+$yedi+$dokuz)*7;
	   $y=($x-$iki-$dort-$alti-$sekiz)%10;	
	   $z=($bir+$iki+$uc+$dort+$bes+$alti+$yedi+$sekiz+$dokuz+$on)%10;
	
	   if($y!=$on or $z!=$onbir){		
		  return "TC kimlik doğrulaması başarısız";		
	   }else {		
		return "TC kimlik doğrulaması başarılı";
	   }	
	}	
}

Şimdi yapmamız gereken form ile gönderdiğim değeri tcdogrula fonksiyonundan geçirip ekrana gerekli uyarıyı verdirmek.

if($_POST){
	// Form ile post ettiğim değeri tcdogrula fonksiyonuna gönderiyorum ve fonksiyonumun verdiği cevabı ekrana yazdırıyorum.
	echo tcdogrula($_POST["tc"]);	

}

Evet artık sizde 11 haneli bir rakamın gerçekten TC kimlik numarası mı olduğunu öğrenebileceksiniz.

Deneyiminizi daha iyi hale getirmek için bu web sitesinde çerezleri kullanıyoruz. Devam ederek çerez kullanımımızı kabul etmiş oluyorsunuz. Daha fazla bilgi için tıklayınız.
KABUL ET
Yükleniyor