PHP Form ile Veri Alma ve 11 Haneli TC Kimlik Numarası Kontrolü
PHP'de kullanıcıdan form aracılığıyla veri almak, web uygulamalarında en sık kullanılan işlemlerden biridir. Bu örnekte HTML formu üzerinden bir TC kimlik numarası alacağız ve PHP kullanarak girilen değerin 11 haneli olup olmadığını kontrol edeceğiz.
Bu örnek sayesinde aynı zamanda form, POST, $_POST, değişkenler ve if / else yapısını birlikte kullanmayı öğreneceğiz.
index.html Dosyası
İlk olarak kullanıcıdan veri alacağımız HTML formunu oluşturalım. Formda bir adet TC numarası giriş alanı ve gönderme butonu bulunuyor.
<form action="ayar.php" method="post">
TC:<br>
<input type="text" name="TC">
<br><br>
<input type="submit" name="Giris" value="Giriş">
</form>
Formun Çalışma Mantığı
Formumuzdaki en önemli bölüm action ve method özellikleridir.
<form action="ayar.php" method="post">
action="ayar.php" kısmı, form gönderildiğinde verilerin hangi dosyaya gönderileceğini belirtir.
Bu örnekte bilgiler ayar.php dosyasına gönderilecektir.
method="post" ise form verilerinin POST yöntemiyle gönderileceğini belirtir.
Bu nedenle PHP tarafında veriyi $_POST ile alabiliriz.
input ve name Özelliği
Kullanıcının TC numarasını yazacağı alan şu şekildedir:
<input type="text" name="TC">
Burada name="TC" bölümü önemlidir.
Çünkü PHP tarafında gönderilen bu veriye yine TC adı üzerinden ulaşacağız.
Örneğin:
$TC = $_POST['TC'];
Burada formdaki name="TC" ile PHP'deki $_POST['TC'] birbirine bağlıdır.
ayar.php Dosyası
Şimdi formdan gönderilen TC numarasını PHP tarafında alalım.
<?php
// index.html dosyasındaki name="TC" alanından gelen veriyi alıyoruz.
$TC = $_POST['TC'];
if ($_POST['TC'] < 10000000000 || $_POST['TC'] > 99999999999)
{
echo "TC 11 haneden fazla veya az olamaz";
}
else
{
echo "TC kimlik = $TC <br>";
}
?>
$_POST Nedir?
$_POST, HTML formundan POST yöntemiyle gönderilen verilere PHP içerisinden ulaşmamızı sağlayan özel bir yapıdır.
Formumuzda:
<input type="text" name="TC">
bulunduğu için PHP tarafında bu veriye:
$_POST['TC']
şeklinde ulaşabiliriz.
Daha sonra bu değeri kendi değişkenimize aktarabiliriz:
$TC = $_POST['TC'];
Bundan sonra kullanıcı tarafından gönderilen değer $TC değişkeninde tutulur.
if ve else Kullanımı
Kodumuzda kullanıcının girdiği değerin belirlediğimiz aralıkta olup olmadığını kontrol etmek için if ve else kullanıyoruz.
if ($_POST['TC'] < 10000000000 || $_POST['TC'] > 99999999999)
{
echo "TC 11 haneden fazla veya az olamaz";
}
else
{
echo "TC kimlik = $TC";
}
Buradaki || operatörü veya anlamına gelir.
Yani iki koşuldan herhangi biri doğruysa if bloğu çalışır.
İlk Koşul
$_POST['TC'] < 10000000000
Bu koşul, girilen değerin belirtilen alt sınırdan küçük olup olmadığını kontrol eder.
İkinci Koşul
$_POST['TC'] > 99999999999
Bu koşul ise girilen değerin 11 haneli bir sayı için belirlenen üst sınırı aşması durumunu kontrol eder.
Bu iki koşuldan biri doğruysa kullanıcıya hata mesajı gösterilir.
echo ile Sonuç Yazdırmak
Koşul doğru değilse kullanıcının girdiği değer ekrana yazdırılır.
echo "TC kimlik = $TC <br>";
Burada $TC değişkeninin değeri mesajın içerisine otomatik olarak eklenir.
Örneğin Çalışma Şekli
Kullanıcı form alanına bir değer girer ve Giriş butonuna basar.
Form verileri ayar.php dosyasına gönderilir.
PHP bu değeri $_POST['TC'] ile alır ve kontrol eder.
Örneğin kullanıcı 11 haneli bir değer girdiğinde:
TC kimlik = 12345678901
şeklinde sonuç gösterilebilir.
Eğer kullanıcı daha kısa veya daha uzun bir değer girerse:
TC 11 haneden fazla veya az olamaz
mesajı gösterilir.
Daha Doğru Bir Uzunluk Kontrolü
Buradaki örnek temel PHP mantığını öğretmek için hazırlanmıştır. Ancak gerçek bir form uygulamasında yalnızca sayısal aralık kontrolü yapmak yerine girilen değerin gerçekten 11 karakter olup olmadığını kontrol etmek daha anlaşılırdır.
Örneğin:
<?php
$TC = $_POST['TC'];
if (strlen($TC) != 11)
{
echo "TC kimlik numarası 11 haneli olmalıdır.";
}
else
{
echo "Girilen TC kimlik numarası: " . $TC;
}
?>
Burada strlen() fonksiyonu bir metnin kaç karakterden oluştuğunu öğrenmek için kullanılır.
Örneğin:
strlen("12345678901");
sonucu 11 olur.
Sadece Rakam Girilmesini Kontrol Etmek
Bir sonraki adımda yalnızca 11 karakter olmasını değil, bu karakterlerin tamamının rakam olmasını da kontrol edebiliriz.
<?php
$TC = $_POST['TC'];
if (!preg_match('/^[0-9]{11}$/', $TC))
{
echo "Lütfen 11 haneli bir sayı giriniz.";
}
else
{
echo "Girilen değer: " . $TC;
}
?>
Bu kontrol sayesinde 11 karakter ve sadece rakamlardan oluşan bir değer beklenir.
Ancak bu kontrolün yalnızca uzunluk ve karakter biçimini kontrol ettiğini belirtmek gerekir. Gerçek bir TC Kimlik Numarasının geçerli olup olmadığını doğrulamak için farklı algoritmik kontroller gerekir.
Önemli Güvenlik Notu
TC kimlik numarası kişisel bir veri olduğundan gerçek projelerde bu tür bilgilerin gereksiz yere ekranda gösterilmesi veya düz metin olarak saklanması doğru değildir. Bu örnek yalnızca PHP'de formdan veri alma ve koşul kontrolü mantığını öğretmek amacıyla kullanılmalıdır.
Bu Örnekte Öğrendiklerimiz
- HTML form oluşturmayı
actionile verinin gönderileceği dosyayı belirlemeyimethod="post"kullanımını$_POSTile form verisi almayı- Formdaki
namedeğerinin önemini - Değeri PHP değişkenine aktarmayı
if / elseile koşul kontrolü yapmayı||operatörünü kullanmayıstrlen()ile karakter uzunluğu kontrol etmeyiechoile sonuç göstermeyi
Sonuç
Bu örnek, PHP ile HTML formlarının nasıl birbirine bağlandığını anlamak için oldukça kullanışlıdır. Kullanıcı HTML formuna bir değer girer, form bu değeri PHP dosyasına gönderir ve PHP gelen veriyi kontrol ederek uygun sonucu ekrana yazdırır.
Bu temel yapıyı öğrendikten sonra aynı mantıkla isim, yaş, telefon, e-posta, kullanıcı adı ve farklı form alanları üzerinde de kontroller yapabilirsiniz.
