<?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>