Aşağıda ki Kod, "TCKimlikNoDogrula" SOAP web hizmeti çağrısını yapar ve döndürülen cevabı ayrıştırır. Özetle, aşağıdaki adımları gerçekleştirir:
Bu kodu kullanarak, Codeigniter 3 ile T.C. Kimlik No doğrulamasını gerçekleştirebilirsiniz.
// T.C. Kimlik No, ad, soyad ve doğum yılı değerlerini atayın
$tc_kimlik_no = $this->input->post('tc');
$ad = $this->input->post('first_name');
$soyad = $this->input->post('last_name');
$dogum_yili = $this->input->post('date_of_birth');
// SOAP isteğini oluşturun
$xml_data = '
' . $tc_kimlik_no . '
' . $ad . '
' . $soyad . '
' . $dogum_yili . '
';
// HTTP başlıklarını oluşturun
$headers = array(
"Content-type: application/soap+xml; charset=utf-8",
"Content-length: " . strlen($xml_data),
);
// fsockopen() fonksiyonunu kullanarak HTTP isteğini gönderin
$url_parts = parse_url("https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx");
$fp = fsockopen($url_parts["host"], 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
} else {
// Bağlantı açıldı, HTTP isteğini gönder
fwrite($fp, "POST " . $url_parts["path"] . " HTTP/1.1\r\n");
fwrite($fp, "Host: " . $url_parts["host"] . "\r\n");
fwrite($fp, "Content-type: application/soap+xml; charset=utf-8\r\n");
fwrite($fp, "Content-length: " . strlen($xml_data) . "\r\n");
fwrite($fp, "Connection: close\r\n\r\n");
fwrite($fp, $xml_data);
// HTTP cevabını al
$response = "";
while (!feof($fp)) {
$response .= fgets($fp, 128);
}
// Bağlantıyı kapat
fclose($fp);
// HTTP cevabını ayrıştır
list($http_header, $http_body) = explode("\r\n\r\n", $response, 2);
// SOAP cevabını ayrıştır
$xml = simplexml_load_string($http_body);
if ($xml === false) {
$this->session->set_flashdata('error_msg', 'SOAP cevabı ayrıştırılamadı');
redirect($_SERVER['HTTP_REFERER']);
} else {
$result = $xml->xpath("//*[local-name()='TCKimlikNoDogrulaResult']");
if (empty($result)) {
$this->session->set_flashdata('error_msg', 'SOAP cevabında "TCKimlikNoDogrulaResult" elemanı bulunamadı');
redirect($_SERVER['HTTP_REFERER']);
} else {
$result = (string) $result[0];
if ($result === "false") {
$this->session->set_flashdata('error_msg', 'T.C. Kimlik No hatalı');
redirect($_SERVER['HTTP_REFERER']);
}
// Bağlantıyı kapat
fclose($fp);
}
}
}
Daha Teknik Olmak Gerekirse;
Bu kod, Türkiye Ulusal Kimlik Doğrulama Servisi'nin web servisinin SOAP (Basit Nesne Erişim Protokolü) kullanılarak POST isteği yapmak için fsockopen()
fonksiyonunu kullanır. İsteğin içeriği, bir kişinin (Türk ulusal kimlik numarası, adı, soyadı ve doğum yılı) kişisel bilgilerini içerir ve sunucu, sağlanan bilginin geçerli olup olmadığını belirten bir Boole değeri ile yanıt verir.
Kod, formdan gönderilen değerlerle $tc_kimlik_no, $ad, $soyad ve $dogum_yili değişkenlerini başlatır. Daha sonra, kişinin kişisel bilgilerini element değerleri olarak içeren SOAP biçiminde bir XML belgesi oluşturur.
Sonra, kod, HTTP başlıklarının bir dizisini oluşturur ve fsockopen()
fonksiyonunu parse_url()
fonksiyonunda belirtilen URL'de sunucuya bağlantı açmak için kullanır. Bağlantı başarılıysa, HTTP başlıklarını ve SOAP isteğini fwrite()
fonksiyonu kullanarak sunucuya yazar.
Sunucudan gelen yanıt fgets()
fonksiyonu ile okunur ve $response
değişkenine kaydedilir. Bağlantı sonra fclose()
ile kapatılır.
$response
değişkeni, explode()
kullanarak HTTP başlığı ve gövdeye bölünür ve gövde simplexml_load_string()
kullanılarak XML nesnesine dönüştürülür. Doğrulama sonucu, xpath()
fonksiyonu kullanılarak XML nesnesinden çıkarılır ve $result
değişkenine kaydedilir.
Bir Yardıma İhtiyacınız Olursa Bize Ulaşmaktan Çekinmeyin ..
Daha Basit olarak yapmak istiyorsanız bu videoyu izleyebilirsiniz.
Videoyu İzle : https://www.youtube.com/watch?v=yCykUPteUSg