PHP ile TC Kimlik Numarasını Doğrulamak

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

# 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

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

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

Yazar: Özgür Koca

Yazar - Tankado.com

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.