Form Doğrulama
Form doğrulama, PHP projelerinde kullanıcıdan alınan verilerin doğruluğunu, bütünlüğünü ve güvenliğini sağlamak için kritik bir süreçtir. Formlardan gelen hatalı veya eksik veriler, uygulamanın işleyişini bozabilir ve güvenlik açıklarına yol açabilir. PHP’de form doğrulama, hem prosedürel hem de nesne yönelimli programlama (OOP) yaklaşımları ile gerçekleştirilebilir. Bu süreçte, veri tiplerinin kontrolü, boş alanların doğrulanması, minimum ve maksimum karakter uzunlukları, e-posta formatı ve özel kurallar gibi algoritmalar uygulanır. Bu eğitimde, PHP sözdizimi, veri yapıları, algoritmalar ve OOP prensipleri form doğrulama bağlamında ele alınacaktır. Okuyucu, kullanıcı girişlerini güvenli bir şekilde doğrulama, hataları yönetme ve optimize edilmiş, yeniden kullanılabilir PHP kodları yazma becerisi kazanacaktır. Form doğrulama ayrıca yazılım geliştirme sürecinde sistem mimarisi ile entegre edilerek, veri doğrulamanın iş mantığı ve kullanıcı arayüzü arasındaki doğru ayrımı göstermektedir. Bu eğitim ile ileri düzey PHP projelerinde form doğrulama tekniklerini etkili ve güvenli bir şekilde uygulayabileceksiniz.
Temel Örnek
php<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$errors = [];
// Kullanıcı adı doğrulama
if (empty($_POST['username'])) {
$errors['username'] = "Kullanıcı adı zorunludur";
} elseif (strlen($_POST['username']) < 5) {
$errors['username'] = "Kullanıcı adı en az 5 karakter olmalıdır";
}
// E-posta doğrulama
if (empty($_POST['email'])) {
$errors['email'] = "E-posta zorunludur";
} elseif (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Geçersiz e-posta formatı";
}
// Şifre doğrulama
if (empty($_POST['password'])) {
$errors['password'] = "Şifre zorunludur";
} elseif (strlen($_POST['password']) < 8) {
$errors['password'] = "Şifre en az 8 karakter olmalıdır";
}
// Sonuç
if (empty($errors)) {
echo "Form başarıyla gönderildi!";
} else {
foreach ($errors as $field => $error) {
echo "$field: $error<br>";
}
}
}
?>
Bu temel örnekte, öncelikle formun POST yöntemi ile gönderilip gönderilmediği kontrol edilir. $errors dizisi, her alan için hata mesajlarını depolamak için kullanılır. Kullanıcı adı alanı boş olmamalı ve en az 5 karakter içermelidir. E-posta alanı filter_var() ve FILTER_VALIDATE_EMAIL ile doğrulanır. Şifre alanı boş olmamalı ve en az 8 karakter olmalıdır. Hatalar yoksa başarı mesajı gösterilir, aksi halde tüm hatalar listelenir. Bu yaklaşım, PHP’nin yerleşik fonksiyonlarının kullanımını, yapılandırılmış hata yönetimini ve doğru sözdizimi ile PHP standartlarını göstermektedir.
Pratik Örnek
php<?php
class FormValidator {
private $data;
private $errors = [];
public function __construct($postData) {
$this->data = $postData;
}
public function validateUsername() {
$value = trim($this->data['username'] ?? '');
if (empty($value)) {
$this->errors['username'] = "Kullanıcı adı zorunludur";
} elseif (strlen($value) < 5) {
$this->errors['username'] = "Kullanıcı adı en az 5 karakter olmalıdır";
}
}
public function validateEmail() {
$value = trim($this->data['email'] ?? '');
if (empty($value)) {
$this->errors['email'] = "E-posta zorunludur";
} elseif (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
$this->errors['email'] = "Geçersiz e-posta formatı";
}
}
public function validatePassword() {
$value = $this->data['password'] ?? '';
if (empty($value)) {
$this->errors['password'] = "Şifre zorunludur";
} elseif (strlen($value) < 8) {
$this->errors['password'] = "Şifre en az 8 karakter olmalıdır";
}
}
public function validateForm() {
$this->validateUsername();
$this->validateEmail();
$this->validatePassword();
return $this->errors;
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$validator = new FormValidator($_POST);
$errors = $validator->validateForm();
if (empty($errors)) {
echo "Form başarıyla gönderildi!";
} else {
foreach ($errors as $field => $error) {
echo "$field: $error<br>";
}
}
}
?>
Bu pratik örnek, form doğrulamanın nesne yönelimli programlama ile uygulanmasını gösterir. FormValidator sınıfı, tüm doğrulama mantığını kapsüller ve kodun düzenli ve yeniden kullanılabilir olmasını sağlar. Her yöntem belirli bir alanı doğrular ve trim() ile temizleme, filter_var() ile format kontrolü yapılır. validateForm() tüm doğrulamaları çalıştırır ve hata dizisini döner. Bu yaklaşım, birim testleri, bakım ve fonksiyon eklemelerini kolaylaştırır, iş mantığı ve sunum katmanının ayrımını sağlar ve PHP standartlarına uygun temiz, güvenli kod yazmayı teşvik eder.
PHP’de form doğrulamada en iyi uygulamalar arasında yerleşik doğrulama fonksiyonlarının kullanımı, doğrulama mantığının sınıflarda kapsüllenmesi, hata yönetiminin merkezi bir yapıda tutulması ve hata mesajlarının dizilerle yönetilmesi bulunur. Yaygın hatalar arasında, verilerin temizlenmeden işlenmesi, istisnaların yönetilmemesi ve verimsiz algoritmalar kullanılması yer alır. Debug işlemleri için var_dump(), print_r() ve error_log() gibi araçlar önerilir. Performans optimizasyonu, kritik alanlara odaklanmayı ve gereksiz işlemlerden kaçınmayı içerir. Güvenlik açısından SQL Injection ve XSS gibi açıkları önlemek esastır. OOP ve PSR standartlarına uygunluk, kodun bakımını ve okunabilirliğini artırır.
📊 Referans Tablosu
PHP Element/Concept | Description | Usage Example |
---|---|---|
Kullanıcı Adı | Boş ve minimum karakter kontrolü | if(strlen($username)<5){/* hata */} |
E-posta | Format doğrulama | filter_var($email,FILTER_VALIDATE_EMAIL) |
Şifre | Zorunluluk ve minimum uzunluk kontrolü | if(strlen($password)<8){/* hata */} |
Hata Dizisi | Hata mesajlarının saklanması | $errors['username']="Zorunlu" |
Sınıf ve Nesne | Doğrulama mantığının kapsüllenmesi | class FormValidator{ /*...*/ } |
Özetle, PHP’de form doğrulama, verilerin bütünlüğünü ve güvenliğini korumak için kritiktir. Prosedürel ve nesne yönelimli yaklaşımları birleştirmek, güvenli, temiz ve ölçeklenebilir kod geliştirmeyi sağlar. Sonraki adımlar, veritabanına kayıt öncesi doğrulama, AJAX ile gerçek zamanlı doğrulama, tasarım desenleri kullanımı ve birim testlerdir. Bu teknikleri uygulamak, modern PHP projelerinde güvenli ve kaliteli uygulamalar geliştirmeyi mümkün kılar.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek