Tüm Fiyatlarımıza Kdv Dahildir.
Tüm Fiyatlarımıza Kdv Dahildir.




Codeigniter 3 ile TC Kimlik Kontrolü Yapımı

Codeigniter 3 ile TC Kimlik Kontrolü Yapımı

  • Gönderiyi Paylaş:
  • 2.742

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:

  1. T.C. Kimlik No, ad, soyad ve doğum yılı değerlerini alır ve SOAP isteği oluşturur.
  2. HTTP başlıklarını oluşturur.
  3. fsockopen() fonksiyonunu kullanarak "https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx" adresine HTTP POST isteği gönderir.
  4. HTTP cevabını alır ve ayrıştırır.
  5. SOAP cevabını ayrıştırır ve "TCKimlikNoDogrulaResult" değerini alır.
  6. Eğer "TCKimlikNoDogrulaResult" değeri "false" ise, kullanıcıya "T.C. Kimlik No hatalı" mesajı gösterir. Eğer "true" ise, hiçbir şey yapmaz.

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

Hosting Satın Al

En Güçlü ve Güvenli Hosting Sahibi Olun. "Siteniz Işık Hızında Açılsın"


Webim Go BTK Onaylı Yer Sağlayıcıdır.
İNCELE
Destek Al

İşiniz İçin En İyi Çözüm Ortağınız Olmaya Hazırız.

TEKLİF AL