CodeBlanks Logo Icon CodeBlanks

Veri doğrulama

PHP kursu · Orta seviye · Ders 96/115

Boş alan ve e-posta biçimi denetimi yapan doğrulama fonksiyonları yazarsın.

Doğrulama neden gerekli?

Kullanıcı formu gönderdiğinde alanlar boş olabilir veya e-posta biçimi hatalı olabilir. Sunucu tarafında doğrulama (validation) yapmazsan çöp veri işlenir; e-posta gönderilemez veya veritabanı kirlenir.

İki temel denetim yaparsın: empty() ile alanın boş olup olmadığına bakarsın; filter_var($email, FILTER_VALIDATE_EMAIL) ile e-posta adresinin geçerli biçimde olup olmadığını denetlersin. Hataları bir $errors dizisinde toplar, boşsa işlemeye devam edersin.

validateMessage fonksiyonu

validateMessage(ContactMessage $m): array fonksiyonu bir ContactMessage örneği alır ve hatalar dizisi döndürür. $errors = []; ile boş dizi başlatırsın. empty($m->name) ise $errors[] = "Ad boş"; eklersin.

E-posta için iki koşulu || ile birleştirirsin: empty($m->email) || filter_var($m->email, FILTER_VALIDATE_EMAIL) === false. Böylece hem boş hem geçersiz biçimi tek dalda yakalarsın. Sonra return $errors; ile hataları döndürürsün.

Uygulama validateMessage fonksiyonunu yaz

Bir validateMessage(ContactMessage $m): array fonksiyonu yaz. İçinde $errors = []; ile boş dizi başlat. empty($m->name) ise $errors[] = "Ad boş"; ekle. empty($m->email) || filter_var($m->email, FILTER_VALIDATE_EMAIL) === false ise $errors[] = "E-posta geçersiz"; ekle. Sonra return $errors; döndür. Test için $valid (adı ve e-postası geçerli) ve $invalid (boş ad, geçersiz e-posta) iki örnek oluştur ve echo count(validateMessage($valid)) . "/" . count(validateMessage($invalid)); yaz.

Örnek çözümü göster
array { $errors = []; if (empty($m->name)) { $errors[] = "Ad boş"; } if (empty($m->email) || filter_var($m->email, FILTER_VALIDATE_EMAIL) === false) { $errors[] = "E-posta geçersiz"; } return $errors; } yaz. $valid ve $invalid örnekleri oluştur, echo count(validateMessage($valid)) . "/" . count(validateMessage($invalid)); yaz.
Örnek çözüm:
<?php
// Veri doğrulama ekle
class ContactMessage {
    public string $name = "";
    public string $email = "";
    public string $message = "";
}

function renderForm(): string {
    return '<form method="post" action="/iletisim.php">'
        . '<label>Ad: <input type="text" name="name"></label>'
        . '<label>E-posta: <input type="email" name="email"></label>'
        . '<label>Mesaj: <textarea name="message"></textarea></label>'
        . '<input type="submit" value="Gönder">'
        . '</form>';
}

function validateMessage(ContactMessage $m): array {
    $errors = [];
    if (empty($m->name)) {
        $errors[] = "Ad boş";
    }
    if (empty($m->email) || filter_var($m->email, FILTER_VALIDATE_EMAIL) === false) {
        $errors[] = "E-posta geçersiz";
    }
    return $errors;
}

$valid = new ContactMessage();
$valid->name = "Ayşe";
$valid->email = "ayse@example.com";
$invalid = new ContactMessage();
$invalid->name = "";
$invalid->email = "gecersiz";
echo count(validateMessage($valid)) . "/" . count(validateMessage($invalid));

Kendini test et

  1. filter_var FILTER_VALIDATE_EMAIL ile geçersiz e-posta ne döner?

    • true döner
    • E-posta dizesini döner
    • Hata fırlatır
    • false döner
    Cevabı göster

    false döner — Doğru. Geçersiz e-postada filter_var false döner; geçerlide e-posta dizesini döner.

  2. filter_var çağrısını tamamla

    if (filter_var($email, ____) === false) {
        $errors[] = "Geçersiz e-posta";
    }
    Cevabı göster
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $errors[] = "Geçersiz e-posta";
    }
  3. Doğrulama kavramlarını eşleştir

    empty()
    Boş alan denetimi
    filter_var
    E-posta denetimi
    FILTER_VALIDATE_EMAIL
    E-posta filtresi
    $errors
    Hata listesi

Orta seviye bölümündeki tüm dersler