WGOD!

The general member portfolio consists of software developers, company owners and investors. Our mission is to ensure that all shared content is clean and functional. For this reason, unfortunately, not every member is accepted. Please do not attempt to register for 1 software or 1 theme, membership is paid. You can join our telegram group below or send an e-mail to [email protected] to purchase the invite code for 10$.

Join Telegram

TCKN Validation Class

Info

Konu Hakkında Merhaba, tarihinde PHP kategorisinde Cavdar  tarafından oluşturulan TCKN Validation Class başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 605 kez görüntülenmiş, 3 yorum ve 3 tepki puanı almıştır...
Kategori Adı PHP
Konu Başlığı TCKN Validation Class
Thread starter Cavdar 
Start date
Replies
Views
First message reaction score
Son Mesaj Yazan medusa

Cavdar 

Friend
Platin
38
Resources
24
203
Warez Point
Turkish Liras
0₺
Offline
This PHP validation class checks that if the T.C citizen number is valid.

Requirements
  • cURL or Soap Class
  • Minimum PHP 7.2
Usage

PHP:
<?php
       
require "tckn.class.php";
$tckn = new TCKN;
   
$result = $tckn->tcknValidate("tckn", "name", "surname", "birth_year"); // Returns "true" if valid. Else returns false.
   
?>

tckn.class.php
PHP:
<?php

class TCKN
{

    var $tckn;
    var $name;
    var $surname;
    var $birthYear;

    public function uppercase($text)
    {
        $text = trim($text);
        $lowercase = array('i','ş','ı','ö','ğ','ü','ç');
        $uppercase = array('İ','Ş','I','Ö','Ğ','Ü','Ç');
        $upText = str_replace($lowercase,$uppercase,$text);
        return mb_strtoupper($upText);
    }

    public function tcknCurl($tckn,$name,$surname,$birthYear)
    {
        $sendSoap = '<?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
        <TCKimlikNoDogrula xmlns="http://tckimlik.nvi.gov.tr/WS">
        <TCKimlikNo>'.$tckn.'</TCKimlikNo>
        <Ad>'.$this->uppercase($name).'</Ad>
        <Soyad>'.$this->uppercase($surname).'</Soyad>
        <DogumYili>'.$birthYear.'</DogumYili>
        </TCKimlikNoDogrula>
        </soap:Body>
        </soap:Envelope>';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $sendSoap);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'POST /Service/KPSPublic.asmx HTTP/1.1',
        'Host: tckimlik.nvi.gov.tr',
        'Content-Type: text/xml; charset=utf-8',
        'Content-Length: '.strlen($sendSoap)
        ));
           
        $income = curl_exec($ch);
        curl_close($ch);
        $incomeResult = strip_tags($income);
                   
        if ($incomeResult == "1" or $incomeResult == "true")
        {
            $result = "true";
        }
        else
        {
            $result = "false";
        }      
        return $result;
    }

       
       
       
    public function tcknSoap($tckn,$name,$surname,$birthYear)
    {
                       
        $sslHTTPS = stream_context_create(
            [
                'ssl' =>
            [
                'verify_peer' => false,
                'verify_peer_name' => false
            ]
        ]);
   
        $client = new SoapClient('https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL',
            array('trace' => 1,
                'soapaction' => 'http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula',
                'encoding' => 'UTF-8',
                'cache_wsdl' => WSDL_CACHE_NONE,
                'user_agent' => '',
                'keep_alive' => false,
                'stream_context' => $sslHTTPS
            ));

        $sendSoap = new SoapVar('<TCKimlikNoDogrula xmlns="http://tckimlik.nvi.gov.tr/WS"><TCKimlikNo>'.$tckn.'</TCKimlikNo><Ad>'.$this->uppercase($name).'</Ad><Soyad>'.$this->uppercase($surname).'</Soyad><DogumYili>'.$birthYear.'</DogumYili></TCKimlikNoDogrula>', XSD_ANYXML);

        $incomeResult = $client->tcknValidate($sendSoap)->tcknValidateResult;
                   
        if ($incomeResult == "1" or $incomeResult == "true")
        {
            $result = "true";
        }
        else
        {
            $result = "false";
        }  
        return $result;
    }

   
    public function tcknAlgo($tckn)
    {          
        if (strlen($tckn) == 11)
        {
            $b = str_split($tckn);
            $b1 = $b[0];
            $b2 = $b[1];
            $b3 = $b[2];
            $b4 = $b[3];
            $b5 = $b[4];
            $b6 = $b[5];
            $b7 = $b[6];
            $b8 = $b[7];
            $b9 = $b[8];
            $b10 = $b[9];
            $b11 = $b[10];

            $b10_val = fmod(( $b1 + $b3 + $b5 + $b7 + $b9 ) * 7 - ($b2 + $b4 + $b6 + $b8),10);
            $b11_val = fmod($b1 + $b2 + $b3 + $b4 + $b5 + $b6 + $b7 + $b8 + $b9 + $b10,10);
        }
           
        if (strlen($tckn) != 11)
        {
            $result = "false";
        }
        elseif ($b1 == 0)
        {
            $result = "false";
        }
        elseif (!is_numeric($b1) or !is_numeric($b2) or !is_numeric($b3) or !is_numeric($b4) or !is_numeric($b5) or !is_numeric($b6) or !is_numeric($b7) or !is_numeric($b8) or !is_numeric($b9) or !is_numeric($b10) or !is_numeric($b11))
        {
            $result = "false";      
        }
        elseif($b10_val != $b10)
        {
            $result = "false";
        }
        elseif($b11_val != $b11)
        {
            $result = "false";
        }
        else
        {
            $result = "true";
        }
            return $result;  
    }

    public function tcknValidate($tckn,$name,$surname,$birthYear)
    {
        $tcknAlgoResult = $this->tcknAlgo($tckn);
           
        if ($tcknAlgoResult == "true")
        {
            if(function_exists('curl_version'))
            {
                $result = $this->tcknCurl($tckn,$name,$surname,$birthYear);
            }
            elseif (class_exists('SOAPClient'))
            {
                $result = $this->tcknSoap($tckn,$name,$surname,$birthYear);
            }
            elseif(!function_exists('curl_version') and !class_exists('SOAPClient'))
            {
                $result = "Both methods (cURL and Soap Class) doesn't exists.";              
            }
        }
               
            if ($tcknAlgoResult != "true")
                {
                    $result = "false";
                }
            return $result;
    }
}

?>
 
Guest
Help Users
  • No one is chatting at the moment.
  • aLeech:
    Guest wariclis has joined the room.
  • (Guest) wariclis:
    hi
    Quote
    (Guest) wariclis: hi
    Back
    Top