• Özgürlük için Pardus...

PHP+SOAP kullanılarak TC Kimlik No Doğrulatma(web servisleri)

ArkadaÅŸlar merhaba
PHP+SAOP uygulamalarını kullanabilmek için apache web serverda bazı deÄŸiÅŸiklikler yapmamız gerekmektedir.php.ini dosyası içinde extension=”php_soap.dll” yazısının olup olmadığını kontrol edin.eÄŸer başında “;” varsa onu silin.eÄŸer yoksa siz yazın.ve apache yi restart edin.böylece aÅŸağıdaki kodları browserinizde açabilirsiniz.Ben herkes anlayabilsin diye baya bir yardım açıklaması yaptım.
PHP+SOAP konusuna yeni baÅŸlayan arkadaÅŸara çok yardımcı olacak diye düşünüyorum.Sayfanın  çoÄŸu yardım açıklamalarından oluÅŸuyor.Direk dreamweaver ‘a kopyala yapıştır yapın..Bu yardım açıklamaları eminim sizin anlamanızda etkili olucaktır.bu kodları ben yaptım denemiÅŸtir ve çalışyo arkadaÅŸalar.Size kolay gelsin

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

  • #1
    Posted by Can on February 17th, 2008 at 7:34 pm

    Merhaba,
    Şu hatayı alıyorum:
    Fatal error: Class ‘SoapClient’ not found in C:\apache\webservis\sakaryali\index.php on line 51
    Yazı için çok teÅŸekkür ederim, ilaç gibi geldi. Bu hata soap klasöründe bir hata olmasından kaynaklanıyor olabilir mi? Ve nasıl çözülür? teÅŸekkürler…

  • #2
    Posted by kGlz on February 18th, 2008 at 10:07 am

    merhaba Can bey
    aslında ben php+soap makalemi yazdığım sıralarda , nüfüs müdürlüğü kendi web servisinden soap ile bilgi çekmeyi olanaklı ve ücretsiz kılıyordu.böylece de benim scriptim çalışıyodu.ancak yaklaşık 1 seneden beri nufus müdürlüğü tckimlik no sorgulama için web servisini ücretli hale getirdi.yani tckimlik no doğrulatmak için önce nüfüs müdürlüğüne başvurup ücretini ödemelisiniz.vede daha öenmlisi.nüfüs müdürlüğü bu hizmeti sadece kurumlara veriyor.yani kişisel olarak başvurup ücretini verseniz dahi nüfüs müdürlüğü size web servisini kullandırmazz.sistem ücretli hale geldiği için hata çıkıyodur.yani benim scriptimle şu anda bilgileri alamazsınız.çünkü ben scriptimi yaptığım zaman servis ücretsizfdi vede ben çok kolay sekilde bilgileri çekiyodum.maalesef artık ücretli ve kurumlara özel bi servis olarak nüfüs müdürlüğü bu hizmeti veriyo.

    ÅŸu adreten kontrol edebilirsiniz.
    http://www.nvi.gov.tr/Hakkimizda/Projeler,Kps.html

Share your opinion! Post your thoughts.