formDogrula

php ile yazılmış form doğrulama sınıfı

5. form doğrulama hatalarını yazdırma

Bir önceki konuda örnek formumuzu doğrulatmayı görmüştük. Fakat kullanıcı, bizim belirlediğimiz formatta veri girmezse, ona bunu nasıl göstereceğiz? İşte şimdi bu bölümde, form doğrulama başarısız olduğunda bu başarısızlığın sebebini gösteren hata çıktılarını işlemeyi öğreneceğiz.

form doğrulama işlemi başarısız olduğunda, hataları aşağıdaki metotlar yardımıyla işleyebilirsiniz:

  1. bak
  2. hata
  3. ilkHata
  4. hatalar
  5. yazHata
  6. yazHatalar
  7. verHata
  8. verHatalar

I. Önce hataları yakalayalım...

Oluşan hataları ekrana yazdırmadan önce yakalamak ve üzerinde işlemler yapmak gerekebilir. Tek bir hata yakalamak için hata(), bütün hataları yakalamak içinse hatalar() metodunu kullanabiliriz. Oluşan hatalardan yalnızca ilkini yakalamak isterseniz ilkHata() metodundan faydalanabilirsiniz.

Bu metotlar hataları yakalarlar ama ekrana herhangi bir çıktı vermezler. O yüzden bu metotların yakaladıkları hataların içeriğine bakmak için bak() isimli metodunu kullanabilirsiniz. Örnek:

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();
    
    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // hataların içeriğine bak
$fdo->bak( $fdo->hatalar() );
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:


Eğer sadece belli bir form alanına ait hataları yakalamak isterseniz hata() metoduna o form alanının ismini ("name" değerini) parametre olarak girmeniz yeterlidir. hata('parola') gibi...

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();
    
    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // "parola" alanına ait hatalara bak
$fdo->bak( $fdo->hatalar('parola') );
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:


En son hatayı yakalamak içinse ilkHata() metodu bize yardımcı olacaktır. Bu metodunun "hata" ve hatalar" metodlarından farkı, geriye Array yerine String tipinde bir değer döndürmesidir. Dolayısıyla bu metodun geri döndürdüğü değeri, aşağıdaki örnekteki gibi doğrudan ekrana yazdırtabilirsiniz.

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();
    
    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız! <br />';
echo $fdo->ilkHata();
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:


II. Bütün hataları ekrana yazdıralım...

Form doğrulama esnasında oluşan hataları doğrudan ekrana yazdırmak için yazHata() ve yazHatalar() metodlarından faydalanıyoruz..

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();

    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // oluşan bütün hatalaları ekrana yaz
$fdo->yazHatalar();
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:

Eğer bu çıktıyı veren sayfanın kaynak kodlarına bakarsanız, hataların <p> etiketi ile çevrelendiğini göreceksiniz. Bu davranış kolaylıkla değiştirilebilir. Hataların hangi HTML etiketiyle çevrelenmesini istiyorsanız, yazHatalar() metoduna o HTML etiketini alttaki örnekteki gibi girmeniz gerekiyor:

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();
    
    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // oluşan bütün hatalaları ekrana yaz
$fdo->yazHatalar('<li>', '</li>');
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:


III. Form alanları için oluşan hatalardan yalnızca ilkini yazdıralım...

Bir form alanı için oluşan hataların hepsini değil de yalnızca ilkini ekrana yazdırmak isteyebiliriz. Bunun için yine yazHatalar() metodu kullanacağız. Bu metodun en son parametresini true olarak belirlediğimizde, form alanları için ayrı ayrı oluşturulan hatalardan yalnızca ilki ekrana yazdırılır.

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();
    
    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // oluşan hatalardan yalnızca ilkini ekrana yazdır
$fdo->yazHatalar('<li>', '</li>', true);
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:


IV. Belli bir form alanı için oluşan hatalardan yalnızca ilkini yazdıralım...

Eğer yalnızca belirli bir form alanı için oluşan hatalardan ilkini ekrana yazdırmak isterseniz, yazHata() metodunu kullanmalısınız. Hangi form alanına ait ilk hatayı yazdıracaksanız, onun ismini ("name" değerini) bu metoda parametre olarak girmeniz gerekir. yazHata('parola') gibi...

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();

    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // sadece "parola" isimli form alanının ilk hatasını göster
$fdo->yazHata('parola');
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız:

Yine yazHatalar() metodunda olduğu gibi, hata mesajını bir HTML etiketi ile çevrelemek isterseniz bu metodu şöyle kullanabilirsiniz.

<?php
    require './formDogrula/eb.formDogrula.php';

    // yeni bir nesne oluşturuyoruz
    $fdo = new formDogrula('form1', 'post');

    // kuralları ini dosyasından al
    $fdo->inidenAl();

    // formu doğrulama işlemini yap ve sonucu ekrana yazdır
    if( $fdo->dogrulat() ) {
        echo 'form başarıyla doğrulandı';
    } else {
        echo 'form doğrulama başarısız!';

        // sadece "parola" isimli form alanının ilk hatasını göster
$fdo->yazHata('parola', '<li>', '</li>');
} ?>

Bu kodu yazdıktan sonra "form1" isimli formu boş olarak gönderin. Alttaki gibi bir çıktı alacaksınız: