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
[php]
# 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;
}
[/php]
C# TC Kimlik Numarası Doğrulama Fonksiyonu
[c]
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;
}
[/c]
VB TC Kimlik Numarası Doğrulama Fonksiyonu
[vb]
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
[/vb]
