PHP

PHP SOAP ile TC Kimlik Doğrulama

Bu yazıda SOAP (Simple Object Access Protocol) servisini kullanarak TC Kimlik numarasının Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü üzerinden authentication işlemini gerçekleştirceğiz.

SOAP servisi platformdan bağımsız XML ve WSDL (Web Services Description Language) dilleri ile haberleşmeyi sağlar. SOAP servisi metodlar, parametre, response ve hata mesajlarına ulaşmamızı sağlayan WSDL dökümanı bu konuda bize yardımcı olmaktadır. Yakın gelecekte fırsat bulursam web servisleri hakkında daha detaylı bir yazı paylaşacağım.

 Fatal error: Class 'SoapClient' not found in C:\AppServ\www\index.php on line 11

Öncelikle SOAP servisini kullanmak için PHP.ini dosyamızdan php_soap.dll eklentisini aktif hale getirmemiz getiriyoruz aksi takdirde yukarıdaki gibi hata verecektir. Satır başındaki noktalı virgülü kaldırdıktan sonra Apache sunucumuzu yeniden başlatıyoruz. Böylece artık bu servisi kullanabileceğiz. 

Şimdi sıra geldi doğrulama fonksiyonumuzu yazmaya.

function verify($values){
	$send = '?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>'.$values["TCKimlikNo"].'</TCKimlikNo>
	<Ad>'.$values["Ad"].'</Ad>
	<Soyad>'.$values["Soyad"].'</Soyad>
	<DogumYili>'.$values["DogumYili"].'</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_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_HEADER, FALSE);
	curl_setopt($ch, CURLOPT_POSTFIELDS,    $send);
	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',
	'SOAPAction: "http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula"',
	'Content-Length: '.strlen($send)
	));
	$return = curl_exec($ch);
	curl_close($ch);
	return strip_tags($return);
}
$values = array("Ad" => "EMRE","Soyad" => "YÜZ","DogumYili" => "1900","TCKimlikNo" => "00000000000");
$result = verify($values);
if($sonuc=="true")
{
	echo "Doğrulandı!";
}
else
{
	echo "Doğrulamanamadı!";
}

Leave a Reply

Your email address will not be published.