formDogrula

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

2. önceden tanımlanmış kullanıcı fonksiyonlarını kullanma

Kendisine gelen değeri işleyerek geriye bir değer döndüren fonksiyonlara "Kullanıcı Fonksiyonları (kul)" diyeceğiz. Bu fonksiyonlar, kullanmakta olduğunuz fonksiyonlardan herhangi birisi olabilir. Kendiniz de bir fonksiyon yazarak bunu Kullanıcı Fonksiyonu olarak formdogrula sınıfıyla birlikte kullanabilirsiniz. Dikkat etmeniz gereken tek şey, mutlak suretle geriye bir değer döndürmesidir.

Peki kullanıcı fonksiyonlarını ne zaman kullanmalıyız?

Bazı durumlarda formDogrula sınıfı için yazılmış eklentiler ihtiyacınızı karşılamayabilir. Örneğin bir kullanıcı adının veritabanınızda olup olmadığını kontrol etmek istiyorsunuz. Bu kontrolü herhangi bir formDogrula eklentisi yapamaz çünkü bilgilerin veritabanında tutulma şekilleri sabit değildir. Böyle bir durumda hemen uyeKontrol() isminde bir fonksiyon yazarsınız ve bunu bir "kul" fonksiyonu olarak gösterebilirsiniz. Ya da daha önceden zaten bu kontrolü yapan bir fonksiyonu kullanırsınız.

Adım 1: kul fonksiyonu yazalım

Veritabanında "uyeler" isimli bir tablonuz var. Üye olmak isteyen kişiler, üye kayıt formuna bir kullanıcı adı yazıyorlar. Eğer yazdıkları bu kullanıcı adı "uyeler" tablosunda varsa yani daha önceden alındıysa form doğrulama işlemi "başarısız" oluyor. Bu senaryoya uygun ve ismi uyeKontrol() olan bir kullanıcı fonksiyonu yazalım:

<?php
  function uyeKontrol($kulAdi)
  {
    // veritabanına bağlan ve seçim yap
    $link = mysql_connect('localhost', 'vt_user', 'vt_pass');
    mysql_select_db('veritabani', $link);

    // sql cümleciğini hazırla
    $sqlc = sprintf(
        "SELECT `kulAdi` FROM `uyeler` WHERE `kulAdi`='%s'",  
        mysql_real_escape_string($kulAdi, $link)
    );

    // sorguyu çalıştır ve sonucu al
    $sonuc = mysql_query($sqlc, $link);
    $durum = mysql_num_rows($sonuc);

    // sonucu boşalt ve bağlantıyı kapat
    mysql_free_result($sonuc);
    mysql_close($link);

    // kullanıcı adı yoksa TRUE geri döndür
    return ($durum === 0) ? true : false;
  }
?>

Gördüğünüz gibi normal bir fonksiyon ve formDogrula sınıfı ile hiçbir bağlı tarafı yok.

Adım 2: Yazdığımız kul fonksiyonunu bir kural içerisinde kullanalım

Bir fonksiyonu kul fonksiyonu olarak göstermek için, kural içerisinde yazarken fonksiyon isminin başına kul_ ifadesini getirmek şarttır. Yani kural içerisine kul_uyeKontrol olarak yazmalıyız.

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

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

  // üye ismi için bir kural ekle
$fdo->kural('kulAdi', 'Kullanıcı adı', 'gerekli|kul_uyeKontrol');
// 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 hataları yazdır $fdo->yazHatalar('<li>', '</li>'); } ?>

Ne kadar kolaymış değil mi? Sadece kural içerisine yazarken küçük bir ekleme yaptık o kadar.

Adım 3: kul fonksiyonu için özel bir hata mesajı ekleyelim

Geriye son bir işlemimiz kaldı. Eğer ki üye formu, bizim eklemiş olduğumuz kul_uyeKontrol() fonksiyonundan geçemezse kullanıcılara bununla ilgili bir hata mesajı göstermemiz gerekiyor.

formDogrula sınıfına özel bir hata mesajı eklemek için hataEkle isimli metodu kullanmalıyız. Bu fonksiyonun ilk parametresine ilgili fonksiyon ismi, ikinci parametresine de hata mesajı girilir.

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

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

  // üye ismi için bir kural ekle
  $fdo->kural('kulAdi', 'Kullanıcı adı', 'gerekli|min_uzunluk[5]|kul_uyeKontrol');

  // üye ismi kontrolü için bir hata mesajı ekle
$fd->hataEkle('kul_uyeKontrol', 'Seçtiğiniz kullanıcı adı daha önce alınmış !');
// 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 hataları yazdır $fdo->yazHatalar('<li>', '</li>'); } ?>

NOT: hataEkle() isimli metot hakkında daha fazla bilgi almak için hata mesajları ve hata mesajlarını değiştirme konusuna bakabilirsiniz.