Kullanıcıdan web form aracılığıyla bazı bilgiler almak gerektiğinde bilgileri doğrulama yoluna gideriz. TC kimlik numarasının formulize edilidğini daha önce söylemiştim. TC Kimlik numarasının son 2 hanesi ilk 9 hanesini doğrulamakta kullanılan bir tür güvenlik kodudur. Aşağıda güvenlik kodunu üreterek TC kimlik numarasını yazım yanlışlıklarına karşı doğrulayan is_valid_tckn() adında bir PHP fonksiyonu yer alıyor. Ayrıca C# ve VB fonksiyonlarını da sayfanın devamında bulabilirsiniz.
PHP TC Kimlik Numarası Doğrulama Fonksiyonu
1 2 3 4 5 6 7 8 9 10 |
# Coded by Tankado @ tankado.com function is_valid_tckn( $tckn ) { $x = $tckn; $valid1=((7*($x[0]+$x[2]+$x[4]+$x[6]+$x[8])-($x[1]+$x[3]+$x[5]+$x[7]))%10)==$x[9]; $valid2=(($x[0]+$x[1]+$x[2]+$x[3]+$x[4]+$x[5]+$x[6]+$x[7]+$x[8]+$x[9])%10)==$x[10]; return $valid1 && $valid2; } |
C# TC Kimlik Numarası Doğrulama Fonksiyonu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
public static bool TcDogrulaV2(string tcKimlikNo) { bool returnvalue = false; if (tcKimlikNo.Length == 11) { Int64 ATCNO, BTCNO, TcNo; long C1,C2,C3, C4, C5,C6,C7,C8, C9,Q1,Q2; TcNo = Int64.Parse(tcKimlikNo); ATCNO = TcNo / 100; BTCNO = TcNo / 100; C1 = ATCNO % 10; ATCNO = ATCNO / 10 ; C2 = ATCNO % 10; ATCNO = ATCNO / 10 ; C3 = ATCNO % 10; ATCNO = ATCNO / 10 ; C4 = ATCNO % 10; ATCNO = ATCNO / 10 ; C5 = ATCNO % 10; ATCNO = ATCNO / 10 ; C6 = ATCNO % 10; ATCNO = ATCNO / 10 ; C7 = ATCNO % 10; ATCNO = ATCNO / 10 ; C8 = ATCNO % 10; ATCNO = ATCNO / 10 ; C9 = ATCNO % 10; ATCNO = ATCNO / 10 ; Q1 = ((10-((((C1+C3+C5+C7+C9)*3)+(C2+C4+C6+C8))%10))%10); Q2 = ((10-(((((C2+C4+C6+C8)+Q1)*3)+(C1+C3+C5+C7+C9))%10))%10); returnvalue = ((BTCNO * 100)+(Q1 * 10)+Q2 == TcNo); } return returnvalue; } |
VB TC Kimlik Numarası Doğrulama Fonksiyonu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Public Shared Function TcDogrulaV2(ByVal tcKimlikNo As String) As Boolean Dim returnvalue As Boolean = False If (tcKimlikNo.Length <> 11) Then Return returnvalue End If Dim TcNo As Long = Long.Parse(tcKimlikNo) Dim ATCNO As Long = (TcNo / 100) Dim BTCNO As Long = (TcNo / 100) Dim C1 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C2 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C3 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C4 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C5 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C6 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C7 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C8 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C9 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim Q1 As Long =((10-(((((((C1+C3)+C5)+C7)+C9)*3)+(((C2+C4)+C6)+C8))Mod 10))Mod 10) Dim Q2 As Long =((10-(((((((C2+C4)+C6)+C8)+Q1)*3)+((((C1+C3)+C5)+C7)+C9))Mod 10))Mod 10) Return ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo) End Function |