PHP ve SOAP ile TC Kimlik Numarası Doğrulama
Daha önceden yazmış olduğum TC Kimlik No Algoritması ve JavaScript Doğrulama Fonksiyonu yazısında, T.C. Kimlik Numarası'nın kontrol algoritmasını JS fonksiyonuna dönüştürerek kullanmayı anlatmıştım.
Bu konuda ise kontrol algoritmasını bir adım daha ileri götürecek ve kullanıcıdan aldığımız TC Numarası, Ad, Soyad ve Doğum Yılı bilgilerini kullanarak nvi.gov.tr sunucularından doğruluğunu kontrol edeceğiz.
SOAPClient kullanımı hakkında detaylı bilgiye ulaşmak için Mustafa KIRIMLI'nın yazmış olduğu PHP İle SOAP Server ‘a Bağlanmak konusunu okuyabilirsiniz.
Öncelikle sayfamızda bu bilgileri toplayabileceğimiz bir form olması gerekiyor. En basit haliyle bir form tasarlamak gerekirse kodumuz aşağıdaki gibi olmalıdır.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> </head> <body> <form id="dogrula" method="post"> <table> <tr><td>T.C. Kimlik Numarası: </td><td><input type="text" name="tckimlikno" size="11" maxlength="11" /><br /></td></tr> <tr><td>Adı: </td><td><input type="text" name="ad" /><br /></td></tr> <tr><td>Soyadı: </td><td><input type="text" name="soyad" /><br /></td></tr> <tr><td>Doğum Yılı: </td><td><input type="text" name="dogumyili" size="4" maxlength="4" /><br /></td></tr> <tr><td></td><td><input type="submit" value="Doğrula" /></td></tr> </table> </form> </body> </html>
Aşağıdaki php kodları girilen bilgileri doğrulamak için kullanacağımız dogrula.php dosyasının içeriğidir.
<?
header ('Content-type: text/html; charset=utf-8');
$client = new SoapClient("https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL");
$_POST['tckimlikno'] *= 1;
try {
$result = $client->TCKimlikNoDogrula(array("TCKimlikNo" => $_POST['tckimlikno'], "Ad" => $_POST['ad'], "Soyad" => $_POST['soyad'], "DogumYili" => $_POST['dogumyili']));
if ($result->TCKimlikNoDogrulaResult) {
echo "TC Kimlik Numarası Geçerli";
} else {
echo "TC Kimlik Numarası Hatalı";
}
}
catch (Exception $ex) {
echo $ex->faultstring;
}
?>Şimdi ise oluşturduğumuz form ile php dosyamızı ilişkilendiren ve AJAX ile sorgulama yaparak sonucunu kullanıcıya gösteren basit bir javascript kodu yazıp formumuzun bulunduğu sayfaya ekliyoruz.
<script type="text/javascript">
$('#dogrula').submit(function() {
$.post("dogrula.php", $("#dogrula").serialize(), function(data){
alert("Doğrulama Sonucu: " + data);
});
return false;
});
</script>Sadece deneme amaçlı bir çalışma olduğu için doğrulama sonucunu alert fonksiyonu ile kullanıcıya göstermeyi tercih ettim. Siz bu kısmını kendinize göre uyarlayarak daha işlevsel bir yapı oluşturabilirsiniz.
Not: Sorgulanacak bilgilerin hepsi büyük harfle girilmek zorundadır.
- Örnek Doğrulama Kodları PHP ve SOAP kullanarak TC Kimlik Numarası Doğrulaması yapabileceğiniz Örnek Kodlar
Başka bir yazıda görüşmek dileğiyle...
01 Nisan 2011, 14:46
teşekkürler
07 Nisan 2011, 11:05
Hocam teşekkür ederim, elinize sağlık…
02 Haziran 2011, 18:30
http://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL
adresi SSL sertifikasına geçtiği için
https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL
olmuştur.
12 Haziran 2011, 21:31
Bilgilendirme için teşekkürler. Kodda gerekli güncellemeyi yaptım.
17 Ağustos 2011, 16:21
Verdiğiniz örnek çok güzel ve kullanışlı bir örnek ancak benim bi sorunum var. Kodları test etmek istedim ve tamamen kendime ait bilgileri yazdım. Sorgu sonucu TC NO hatalıdır olarak dönüyor. Birkaç kez denedim sonuç değişmedi. Sorun ne olabilir ?
17 Ağustos 2011, 16:25
Sorunun sebebi buldum.
Ekleme yapayım… Sorgulanacak bilgilerin hepsi büyük harfle girilmek zorundadır.
19 Ağustos 2011, 11:35
Hatırlatma için teşekkür ederim Yasin. Yazıya not düşüyorum.
22 Ağustos 2011, 14:00
Uygulama could not connect to host hatası veriyor. Nasıl çözebilirim.
23 Ağustos 2011, 09:37
Çok büyük ihtimalle test ettiğin sunucuda php’nin OpenSSL desteği aktif edilmemiş.
php.ini dosyasında
ve
satırlarını bulun.
Bu satırların önlerindeki “;” (noktalı virgül) işaretlerini silin.
Eğer bu satırlardan herhangi biri yoksa, php.ini dosyasındaki [extensions] bölümünün altına ekleyebilirsiniz.
Değişiklikleri kaydedip, Apache’yi yeniden başlatın. Bu ayarlardan sonra sorunsuz çalışması gerekiyor.
05 Eylül 2011, 12:25
hocam verdiğin bilgiler için teşekkürler. Senin gösterdiğin kodları kullanıyordum bir sıkıntı yoktu fakat 2 eylülden itibaren kodlar fatal error vermeye başladı. sebebini anlamadım. Değiştirilmesi gereken bir yer mi var ?
05 Eylül 2011, 13:03
tckimlik.nvi.gov.tr adresinde bir sıkıntı var. Bu sorunu düzelttiklerinde tekrar çalışmaya başlayacaktır.