Php 8 Form Validations

Php 8 Form Validations

PHP 8'de form doğrulama (form validation), kullanıcıların formu gönderdiğinde verilerin doğruluğunu ve güvenliğini kontrol etme işlemidir. Doğru form doğrulama, hem kullanıcının yanlış veri girmesini önler hem de uygulamanın güvenliğini artırır.

Form doğrulama iki aşamada yapılabilir:

  1. İstemci tarafı doğrulama (Client-side validation): Genellikle JavaScript veya HTML5 ile yapılır. Kullanıcı tarafında anlık olarak gerçekleşir, ancak tamamen güvenli değildir çünkü tarayıcıda devre dışı bırakılabilir.
  2. Sunucu tarafı doğrulama (Server-side validation): PHP gibi sunucu tarafında çalışan dillerle yapılır. Bu, güvenlik açısından zorunludur çünkü tarayıcıdan gelen veriler her zaman güvenli olmayabilir.

1. Sunucu Taraflı Form Doğrulama (PHP ile)

Bir örnek üzerinden PHP ile form doğrulamayı adım adım inceleyelim.

1.1. Form HTML Kısmı

Aşağıdaki örnek, kullanıcının bir isim, e-posta ve şifre girebileceği bir kayıt formudur.

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>Form Doğrulama</title> </head> <body> <h1>Kayıt Formu</h1> <form action="validate.php" method="post"> <label for="name">İsim:</label> <input type="text" id="name" name="name"> <br> <br> <label for="email">E-posta:</label> <input type="email" id="email" name="email"> <br> <br> <label for="password">Şifre:</label> <input type="password" id="password" name="password"> <br> <br> <input type="submit" value="Kayıt Ol"> </form> </body> </html>

Bu formda üç önemli alan bulunur: name, email, ve password. Formu doldurup gönderdiğimizde veriler validate.php dosyasına POST yöntemi ile gönderilecektir.

1.2. PHP Doğrulama Kısmı

Formdan gelen verileri PHP ile alıp doğrulamak için validate.php dosyasını oluşturacağız. Aşağıdaki PHP kodu, form verilerini kontrol eder ve gerekli doğrulamaları yapar.

<?php // Hata mesajları için dizi $errors = []; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Form verilerini al $name = trim($_POST['name']); $email = trim($_POST['email']); $password = trim($_POST['password']); // 1. İsim doğrulama (boş olup olmadığını kontrol et) if (empty($name)) { $errors[] = "İsim alanı boş olamaz."; } elseif (!preg_match("/^[a-zA-Z-' ]*$/", $name)) { // İsim sadece harfler ve boşluk içermeli $errors[] = "İsim yalnızca harf ve boşluk içermelidir."; } // 2. E-posta doğrulama (boş ve geçerli bir e-posta olup olmadığını kontrol et) if (empty($email)) { $errors[] = "E-posta alanı boş olamaz."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = "Geçerli bir e-posta adresi giriniz."; } // 3. Şifre doğrulama (boş olmamalı ve minimum karakter uzunluğu olmalı) if (empty($password)) { $errors[] = "Şifre alanı boş olamaz."; } elseif (strlen($password) < 6) { $errors[] = "Şifreniz en az 6 karakter uzunluğunda olmalıdır."; } // Hata var mı kontrol et if (count($errors) > 0) { // Hataları ekrana yazdır foreach ($errors as $error) { echo "<p style='color:red;'>$error</p>"; } } else { // Hata yoksa başarı mesajı göster echo "<p style='color:green;'>Kayıt başarıyla tamamlandı!</p>"; // Veritabanı işlemleri burada yapılabilir } } ?>

2. PHP Form Doğrulama Adımları

  1. Boş Alan Kontrolü: empty() fonksiyonu ile her alanın doldurulup doldurulmadığını kontrol ederiz. Eğer bir alan boşsa, kullanıcının bu alanı doldurması gerektiğini belirten bir hata mesajı veririz.

  2. İsim Doğrulama: Kullanıcının girdiği ismin yalnızca harfler ve boşluklardan oluşup oluşmadığını kontrol ederiz. Bu, preg_match() ile yapılan bir düzenli ifade (regex) kontrolüdür.

  3. E-posta Doğrulama: filter_var() fonksiyonu ile e-postanın geçerli bir formatta olup olmadığını kontrol ederiz. Eğer geçerli değilse bir hata mesajı gösteririz.

  4. Şifre Doğrulama: Şifrenin en az 6 karakter uzunluğunda olup olmadığını kontrol ederiz. Eğer kısa ise kullanıcıya şifresinin yeterince uzun olmadığını bildiririz.

3. Güvenlik ve Doğrulama İpuçları

3.1. Veri Temizleme

Kullanıcıdan alınan verilerin güvenliğini sağlamak için her zaman verileri temizlemek gerekir:

  • trim() : Başındaki ve sonundaki gereksiz boşlukları kaldırır.
  • htmlspecialchars() : Özel HTML karakterlerini temizleyerek XSS saldırılarına karşı koruma sağlar.

3.2. XSS Saldırılarına Karşı Koruma

Form verilerini doğrudan ekrana yazdırırken XSS (Cross-site scripting) saldırılarına karşı dikkatli olun. Kullanıcı tarafından girilen veri, HTML ve JavaScript kodu içerebilir. Bu nedenle, htmlspecialchars() ile verileri güvenli hale getirmek gerekir:

$name = htmlspecialchars($name);

3.3. SQL Enjeksiyonuna Karşı Koruma

Veritabanına veri eklerken SQL enjeksiyonuna karşı korunmak için PDO veya MySQLi kullanarak hazırlıklı ifadeler (prepared statements) kullanmalısınız.

4. Doğrulamada Düzenli İfadeler (Regex) Kullanma

Daha karmaşık doğrulama gerektiren durumlar için düzenli ifadeler (regex) kullanılabilir. Örneğin, yalnızca harf ve boşluk içeren bir isim kontrolü yapalım:

if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) { $errors[] = "İsim yalnızca harf ve boşluk içermelidir."; }

Düzenli ifadeler, belirli kalıplara uygun veri girişi yapılmasını sağlar. Örneğin, telefon numaraları, posta kodları gibi belirli formatlarda girilmesi gereken veriler için kullanılabilir.

5. İstemci Taraflı Doğrulama (HTML5 ve JavaScript)

PHP ile sunucu taraflı doğrulama yapmak zorunludur, ancak kullanıcı deneyimini iyileştirmek için istemci tarafında da doğrulama yapılabilir. HTML5 özellikleri ve JavaScript ile kullanıcının formu yanlış doldurması durumunda anında geri bildirim verebilirsiniz.

HTML5 Doğrulama:

<input type="email" id="email" name="email" required>

Bu örnekte, HTML5’in yerleşik doğrulama özelliklerinden required ve email türü kullanılarak form istemci tarafında da doğrulanır.

6. Sonuç

PHP 8’de form doğrulama, kullanıcıdan alınan verilerin doğruluğunu ve güvenliğini sağlamak için hayati önem taşır. İstemci tarafı doğrulama kullanıcı deneyimini iyileştirse de, asıl güvenlik PHP ile sunucu tarafında yapılmalıdır. Form doğrulaması yaparken her zaman veri temizlemeye, güvenlik önlemlerine ve hatalı girişlerin kontrolüne dikkat etmelisiniz.



Yorum Ekle

Üzerine gel