Hoşgeldin Misafir

PHP ile TC Numaradan Akraba Bulma Algoritması

Yücel Yıldırım

28 Nis 2019
1,397 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Kodları yazarken adım adım açıklamalar ekledim yine de özetlemek gerekirse;-
1) tc numarasını bir değişkene atadık, ilk 9 hanesini aldık farklı bir değişkene atadık-
2) 9 haneli numaranın ilk 5 hanesi ve son 4 hanesini ayırdık-
3) burdan sonrasını for döngüsü içinde yazdık çünkü tcüretme tekrarlama işi burada dönecek-
4) ilk 5 haneye 3 ekledik, son 4 haneden 1 cıkardık-
… devamını kodlardan takip edebilirsiniz…-
Kod:
<?php
 
$tcno = "11111111111"; // 11 haneli tc no buraya gelecek bu alana post olarak da alabilirsiniz tcyi
$ilk9 = substr($tcno, 0, 9); // girilen tc numarasının ilk 9 hanesi
//echo $ilk9;
$tc5 = substr($ilk9, 0,5); // 9 haneli numaranın ilk 5 hanesi
$tc4 = substr($ilk9, 5,4); // 9 haneli numaranın son 4 hanesi
// $tc4 = substr_replace($ilk9, '', -3); son 3 hane silme
for ($j=0; $j < 100; $j++) {  // 100 yerine girilen rakam kadar program TC üretecektir
					// yaşça daha büyük akrabayı bulmak için geçerlidir. Daha kucuk için tam tersi yapılacaktır. ( 3 çıkartılacak 1 eklenecek)
	$tc5 = $tc5+3; // ilk 5 haneye 3 ekliyoruz
	$tc4 = $tc4-1; // son 4 haneden 1 cıkarıyoruz
	$ytc9 = $tc5.$tc4; // yeni üretilen 9 haneli tc
$num = $ytc9;
$num = str_split($num,1);
$arr_odd = array();
$arr_doub = array();
for ($i = 0; $i < count($num); $i++) {
    if ($i % 2 == 0)
        $arr_doub[] = $num[$i];
    else
        $arr_odd[] = $num[$i];
}
$yeni9 = 7*array_sum($arr_doub); // 1. 3. 5. 7. 9. haneleri toplayıp 7 ile çarptık
$yhn10 = ($yeni9-array_sum($arr_odd))%10; // 7 ile çarptığımız değerden 2. 4. 6. 8. haneleri toplayıp çıkardık  mod10 aldık 10. haneyi elde ettik
$yeni10 = $ytc9.$yhn10; // 10 haneli halini yazdırdık
$yeni10  = str_split($yeni10,1);
$arr_top = array();
for ($i = 0; $i < count($yeni10 ); $i++) {
$arr_top[] = $yeni10[$i]; // 10 haneyi diziye aktardık
	}
	$toplam10hn=array_sum($arr_top); // 10 haneli sayının rakamlarını topladık
	$yhn11=(array_sum($arr_top))%10;  // mod10 alarak 11. haneyi elde ettik
	echo $yeniTc = $ytc9.$yhn10.$yhn11."<br>"; // 9 haneli sonucun arkasına elde ettiğimiz 10. ve 11. haneleri yazdırarak yeni tc numarasını elde ediyoruz
}
 
 ?>
 

CyberHawk

CyberHawk

WebMaster
Adana
12 Ara 2018
16,070 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Yücel Yıldırım' Alıntı:
WebciAdam' Alıntı:
vaybe demek mantık buymuş çoğu sitede bunu doğrulama amacı ile görmüştüm demek bu şekilde yapıyorlarmış teşekürler harika paylaşım

Aslında bir kimlik datası olur.Oradan php bağlantı yaparak bilgileri alır.

hmm ben bunu devletten özel kod aldıklarına düşünüyordum php nin ne kdar muhteşem bir dil olduğunu tekrar anlıyorum


Yücel Yıldırım' Alıntı:
WebciAdam' Alıntı:
vaybe demek mantık buymuş çoğu sitede bunu doğrulama amacı ile görmüştüm demek bu şekilde yapıyorlarmış teşekürler harika paylaşım

Aslında bir kimlik datası olur.Oradan php bağlantı yaparak bilgileri alır.

sonucta kimlikle ilgili işlem yapınca devletle özel anlaşmaları var diye zannediyordum :rolleyes: