Katılım
23 Aralık 2023
Mesajlar
304
Makaleler
1
Çözümler
2
Beğeniler
282
Yer
Üniversiteler, Dumlupınar Blv. 1/6 D:133, ODTÜ
Merhabalar. Bazı kişiler web sitelerine TC Kimlik Numarası isteyen formlar koyuyor fakat nasıl doğrulayacaklarını bilmiyorlar. Hiçbir şekilde yasadışı yöntem kullanmaya gerek kalmadan, Nüfus ve Vatandaşlık İşlerinin bizlere sunduğu API hizmeti ile nasıl doğrulama yapacağınızı göstereceğim.

API linki:

Herşeyden önce, Win + R kombinasyonuyla Çalıştır'ı başlatın ve içerisine "php.ini" yazın. Açılan metin belgesinden CTRL + F kombinasyonuyla "soap" yazın. Şu değişikliği yapın:
Kod:
;extension=soap
extension=soap

Kısaca, başındaki noktalı virgülü kaldırın. Soap eklentisini aktif etmiş oluyorsunuz. Ardından kullandığınız programdan Apache hizmetini yeniden başlatın.

Basit bir form oluşturarak işe başlayacağız. Ben sadece kodun temel mantığını göstermek için anlattığımdan dolayı herhangi bir CSS veya stil dosyası kullanmadım, sadece form oluşturdum. Görüntüsünü siz sonradan istediğiniz gibi halledebilirsiniz.
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TCKN Doğrula</title>
</head>
<body>
    <form action="form.php" method="POST">
        <label for="tckn">TC Kimlik Numarası</label>
        <input type="text" name="tckn" id="tckn" placeholder="TC Kimlik Numarası">
        <br>
        <label for="name">Ad</label>
        <input type="text" name="name" id="name" placeholder="Ad">
        <br>
        <label for="surname">Soyad</label>
        <input type="text" name="surname" id="surname" placeholder="Soyad">
        <br>
        <label for="dob">Doğum Yılı</label>
        <input type="text" name="dob" id="dob" placeholder="Doğum Yılı">
        <br>
        <button type="submit" name="submit">Doğrula</button>
    </form>
</body>
</html>

Devamında ise API'ı kullanarak bir istek oluşturacağız. PHP kodumuz şu şekilde:
PHP:
<?php

if($_POST['tckn'] && $_POST['name'] && $_POST['surname'] && $_POST['dob']) {

    $tckn = $_POST['tckn'];
    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $dob = $_POST['dob'];

    try {

        $tcknApi = new SoapClient("https://tckimlik.nvi.gov.tr/service/kpspublic.asmx?WSDL");
        $params = [
            "TCKimlikNo" => $tckn,
            "Ad" => $name,
            "Soyad" => $surname,
            "DogumYili" => $dob
        ];

        $response = $tcknApi -> TCKimlikNoDogrula($params);
        if($response -> TCKimlikNoDogrulaResult) {
            echo 'Doğrulama başarılı.';
            exit;
        } else {
            echo 'Doğrulama başarısız.';
            exit;
        }

    }
    catch (PDOException $e) {
        die("Hata: " . $e->getMessage());
    }

} else {
    echo 'Bütün bilgileri doldurun.';
    exit;
}

İlk olarak formdan inputa doldurulan verilerimizi çektik ve onları bir değişkene atadık. Ardından API'a bir istek gönderdik ve isteğimizden olumlu dönüş alırsak "Doğrulama Başarılı" yazısını yazdırdık. TCKimlikNoDogrula ve TCKimlikNoDogrulaResult bölümleri hariç diğer bütün bölümleri kafanıza ve projenize göre değiştirebilirsiniz. Ben herhangi bir güvenlik fonksiyonu oluşturmadım veya kullanmadım. Onlara dikkat etmeyi unutmayın. Çünkü doğrulama yapacağınız veriler kritik veriler.

Anlatımım kötü olmuş olabilir, kusuruma bakmayın. Yardımcı olabildiysem ne mutlu. Sorularınızı sorabilirsiniz. İyi forumlar.

Uğraşmak istemeyenler için, GitHub linki:

Videolu anlatım:
 
Son düzenleyen: Moderatör:
Post istekleri en düşük base64 ile şifrelenmesi gerekmektedir.

Kısaca bir kaynak. Çok uzun bir konu olduğu için.

SSL sertifikası varsa fazla sorun olmaz ama güvenlik katmanı eklemek her zaman iyidir.

Şifreleme olamadan form datası.

1728730698618.webp

Şifreleme olduğunda form datası.
1728730726966.webp
 
Projesine eklemek isteyen varsa maalesef KPSPublic servisi kapatılacakmış.

Kaynak: tckimlik.nvi.gov.tr

"Genel Müdürlüğümüz https://tckimlik.nvi.gov.tr/ public web sayfası doğrulama servisleri 01.08.2025 tarihinde kapatılacağı belirtilmiş olup... Entegrasyon süreçlerinin devam etmesinden dolayı web sayfası doğrulama servislerinin kapatılması 30.09.2025 tarihine kadar uzatılmıştır. Not: Genel Müdürlüğümüz https://tckimlik.nvi.gov.tr/ public web sayfası doğrulama servisleri ekran hizmeti olarak kullanıma açık kalmaya devam edecektir."