<?php
/*
** Copyright (c) 2006 Kadir GÜLAĞIZ
** Bu sayfa PHP+Soap uygulamasıdır.Bu sayfada
http://tckimlik.nvi.gov.tr(Nufus Müdürlüğü) adresinin web servisi
** kullanılarak TC kimlik Doğrulaması yapılmaktadır.Bunun için nüfus müdürlüğünün web servis hizmeti kullanılmıştır.
** Bu sayfadaki bilgiler tamamen serbest dolaşabilir.İstenildiği gibi değiştirilebilir.
** İstenildiği gibi yayınlanabilir.Bu tamamiyle size kalmış.
** Bu sayfa PHP+Soap kullanımını öğrenmek isteyenlere başlangıç kaynağı olarak kullanılabilir.Kodlar içinde
** hiçbir hazır kütüphane kullanılmamıştır.
** Bu sayfayla ilgili tüm önerilerinizi ve eleştirilerinizi
**
kadir_glz( at )yahoo.com adresine bekliyorum.
** Sakarya Üniversitesi Bilgisayar Mühendisliği 3 .sınıf
**
http://kGlznet.kayyo.com
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>T.C. Kimlik Sorgulama...</title>
<style type="text/css">
<!--
.style2 {
font-size: 14px;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
}
.style3 {
font-size: 12px;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
-->
</style>
</head>
<body>
<?php
/* Öncelikle Nüfus Müdürlüğünün web servis hizmetini kullanabilmek için gereken adresi bilmeliyiz.
** soruişareti(?)'den sonra "wsdl" uzantısı olmalı.
** bu adresi öğrendikten sonra bir SOAP nesnesi oluşturmalıyız.aşağıdaki tek satırlık kod bir
** SoapClient nesnesi oluşturmaktadır.Soap Nesnesi oluşturalım ki,nüfus müdürlüğünün web servisi
** içindeki fonksiyonları kullanabilelim.
*/
$soap=new SoapClient("http://tckimlik.nvi.gov.tr/kpsPublic.asmx?wsdl");
?>
<div align="center">
<form id="form1" name="form1" method="post" action="">
<table width="350" border="1" cellpadding="0" cellspacing="0" bordercolor="#FF0000">
<TR>
<TD><div align="center">
<table width="300" border="0">
<TR>
<TD><div align="center" class="style2">T.C. Kimlik Numaranızı Giriniz..: </div></TD>
</TR>
<TR>
<TD><div align="center">
<input name="txtkno" type="text" id="txtkno" size="20" />
</div></TD>
</TR>
<TR>
<TD><div align="center">
<input type="submit" name="Submit" value="Sorgula..." />
</div></TD>
</TR>
</table>
</div></TD>
</TR>
</table>
</form>
<?php
/*
**Buradaki kodlar sayfa post edildikten sonra kullanaılabilecekler.
*/
if($_POST)
{
/*
** Aşağıdaki fonksiyon türkçe karakterler dönüştürme fonksiyonudur.
** biz Nüfüs müdürlüğünün web servisini kullanarak verileri çektiğimizde , o veriler utf-8 formatındadırlar.
** yani bizim "İ" olmasını beklediğimiz harfimiz "Ä°" şeklinde gelmektedir.
** Bunu düzeltebilmek için bir fonksiyon kullanıyoruz.Böylece yanlış gelen harfler
** düzeltilerek kullanıcıya doğru bir şekilde gösterilmektedir.
*/
function turkce_karakterler($tck)
{
$tck=str_replace("Ä°","İ",$tck);
$tck=str_replace("Ãœ","Ü",$tck);
$tck=str_replace("Ä�","Ğ",$tck);
$tck=str_replace("Å?","Ş",$tck);
$tck=str_replace("Ç","Ç",$tck);
$tck=str_replace("Ö","Ö",$tck);
return $tck;
}
/*
**Aşağıdaki tek satrılık kod ,nufus müdürlüğünün("http://tckimlik.nvi.gov.tr") web servisinin bize sunmuş olduğu
** fonksiyonlardan biridir."TCKimlikNoDogrula" fornksiyonu sayfamızdaki tckimlik numaramızı yazdığımız text kutusunun
** degerini alır.Böylece biz tckimlik numarasının aranması işlemini nufus müdürlüğünün web servisi
** üzerine atarız.Böylece gönderdiğimiz numara nufus müd. web servisinde aranır.XML verisi halinde olduğu içinde
** array kullanmamız gerekmektedir.
** peki neden *1(bir ile çarptık)?
** Çünkü "TCKimlikDogrula" fonksiyonu long veri tipindedir.
** bizim text kutumuz string bir değer gönderir.biz onu *1 ile sayısal hale getiririz.
**Eğer *1 i silersek , sorgulama çalışmaz.isterseniz deneyin!!!
*/
$tc=$soap->TCKimlikNoDogrula(array("tcKimlikNo"=>$_POST['txtkno']*1));
/*
** Aşağıdaki array yapısı şunun içindir.Şimdi hemen
http://tckimlik.nvi.gov.tr/Web/WebServices.aspx adresine gidin.
** aşağıda çıkan linki tıklayın.(XML web servisleri dokumantasyonu)
** Orada web servisinin bize kullanmamız için free olarak fonksiyonları görülmektedir.
** biz "TCKimlikNoDogrula" fonksiyonunu kullanmaktayız.O fonksiyonu tıklayınca karşınıza XML sayfası gelir.
** O XML sayfasında "TCKimlikNoDogrula" etiketi vardır.biz onu yukarıdaki tek satrılık kod ile kullandık.
** Aşağıya inerseniz orada birde "TCKimlikNoDogrulaResult" etiketini göreceksiniz.Oranın içeriğine bakınca
** aşağıdaki array yapısının etiketlerini göreceksiniz.
** yani biz "TCKimlikNoDoğrula" etiketine text kutumuzdaki numarayı gönderdiğimizde
** bize "TCKimlikNoDogrulaResult" etiketi geri bildirim yapıp , o tckimlik numarasının bilgilerini bize geri döndürür.
** Böylece nufus müdürlüğünün web servisini kullanmış oluruz.
*/
$bilgiler=array("TCKimlikNo" => "T.C. Kimlik Numaranız..:",
"Ad" => "Adınız..:",
"Soyad"=>"Soyadınız..:",
"DogumYil"=>"Doğum Yılınız..:");
/*
** Şimdi gelelim verileri ekrana yazdırmaya.
** bir foreach döngüsü kullanrak "TCKimlikNoDogrulaResult" fonksiyonu vasıtasıyla
** bilgileri ekrana yazıyoruz.hemde utf-8 formatında gelen verileri turkce_karakterler fonksiyonunu
** kullanarak iso-8859-9 formatındaymış gibi ekrana basıyoruz.
** işte bu kadar.
*/
echo "<table border=\"1\" width=\"350\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#FF0000\">";
foreach($bilgiler as $deger => $metin)
{
echo "<TR><TD><div align=\"left\" class=\"style3\">".$metin."</div></TD>
<TD>".turkce_karakterler($tc->TCKimlikNoDogrulaResult->$deger)."</TD></TR>";
}
echo "</table>";
}
/*
** Bu kodlar PHP+SOAP uygulamalarına yeni başlayan arkadaşlara iyi bir
** başlangıç kaynağı olaağına inanıyorum.Bu sayfadaki kodlar denemiştir
** ve çalışıyo arkadaşlar.İnşallah yardımım olmuştur.Sizlere başarılar
** ve kolay gelsin...
*/
?>
</div>
</body>
</html>