<?php
/**
* @author ismet işcan (Dr.iq)
* @email dr.lq@hotmail.com
* @website http://www.iscansoft.com
* @yıl 2010
* @ScriptAdi Tc kimlik numarası doğrulama
*/

class Tckimlik_dogrula
{
    private   $tc_no;
    private   $ad;
    private   $soy_ad;
    private   $dogum_yili;
    public    $soap_cevap;
    
    function __construct($tc_no,$ad,$soy_ad,$dogum_yili)
    {
        $this->tc_no      = $tc_no;
        $this->ad         = $ad;
        $this->soy_ad     = $soy_ad;
        $this->dogum_yili = $dogum_yili;
        $this->soap_istek_yap();

    }
    private function soap_istek_yap()
    {
        $c = curl_init();
        curl_setopt($c,CURLOPT_URL,'http://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx');
        curl_setopt($c,CURLOPT_POST,TRUE);
        curl_setopt($c, CURLOPT_HTTPHEADER, array('Content-Type: application/soap+xml'));
        curl_setopt($c,CURLOPT_POSTFIELDS,'<?xml version="1.0" encoding="latin5"?>
        <soap12:Envelope  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
          <soap12:Body>
            <TCKimlikNoDogrula xmlns="http://tckimlik.nvi.gov.tr/WS">
              <TCKimlikNo>'.$this->tc_no.'</TCKimlikNo>
              <Ad>'.$this->ad.'</Ad>
              <Soyad>'.$this->soy_ad.'</Soyad>
              <DogumYili>'.$this->dogum_yili.'</DogumYili>
            </TCKimlikNoDogrula>
          </soap12:Body>
        </soap12:Envelope>');
        curl_setopt($c,CURLOPT_RETURNTRANSFER,TRUE);
        $cikti = curl_exec($c);
        curl_close($c);
        $this->soap_isle($cikti);
        
    }
    private function soap_isle($c)
    {
        if($c)
        {
            preg_match('#<TCKimlikNoDogrulaResult>(.*?)</TCKimlikNoDogrulaResult>#',$c,$kk);
            if($kk[1] == 'true')
            {
                $this->soap_cevap = 'd';
            }elseif($kk[1] == 'false')
            {
                $this->soap_cevap = 'y';
            }else
            {
                $this->soap_cevap = 'tc_yanlis';
            }
            
        }
    }
}

// Kullanımı
$tc =   new Tckimlik_dogrula('tc kimlik numarası','ismet','işcan',1987);
if($tc->soap_cevap == 'd')
{
    // verilen tc kimlik numarası doğrudur ve diğer bilgiler uyuyor (ad,soyad,doğum tarihi)
    echo 'tc kimlik numarası doğrudur';
}elseif($tc->soap_cevap == 'y')
{
    // verilen tc kimlik numarası doğrudur fakat diğer bilgiler uymuyor (ad,soyad,doğum tarihi)
    echo 'verilen tc kimlik numarasına diğer bilgiler uymuyor (ad,soyad,doğum tarihi)';
}else
{
    // verilen tc kimlik numarası yanlıştır.
    echo 'verilen tc kimlik numarası yanlıştır';
    
}
?>