formDogrula

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

3.eklenti yazmak

formDogrula sınıfı için eklenti yazmak son derece kolaydır. Bu bölümde size, basit bir eklentinin nasıl yazılabileceği anlatılacaktır. Örnek olarak, formdan gelen değerin onaltılık yani hexadecimal bir değer olup olmadığını kontrol eden bir eklenti oluşturacağız. Eklentinin ismi kısaca "hexa" olsun.

Adım 1: ön hazırlık

Bütün formDogrula eklentilerinin kurallar isimli klasörde bulunması gerekir. O yüzden bu klasör içerisine girip fdo_hexa.php isminde bir dosya oluşturuyoruz. Daha sonra bu dosyanın içerisine alttaki açıklama satırlarını ekliyoruz. Bu açıklama satırları son derece önemlidir.

<?php
/**
* eklentinin adi: hexa
* eklenti hedefi: değerin gerçekten bir 16'lık sayı olup olmadığını kontrol eder
* örnek kullanım: hexa
* eklenti sürümü: v1.0
* son güncelleme: 15 Ağustos 2009
* 
* yazar: Erhan BURHAN
* email: eburhan[at]hotpop[dot]com
* adres: www.eburhan.com
*/

?>

NOT: Açıklama satırları standart ifadelerden oluşmaktadır. Örneğin açıklama satırına "email" yerine "eposta" kesinlikle yazmayınız! Ayrıca bu ifadelerin küçük harflerden oluşması zorunludur.

Adım 2: doğrulama fonksiyonunu yazmak

Şimdiki adımda asıl doğrulama işini yapacak olan fonksiyonu yazacağız. Fonksiyon ismi ile dosya ismi (.php uzantısı olmadan) aynı olmak zorundadır. Ayrıca bu fonksiyonun $arg ve &$fdo isminde iki tane de parametresi olması şarttır.

$fdo parametresi önündeki & karakterine özellikle dikkat ediniz !

<?php
/**
* eklentinin adi: hexa
* eklenti hedefi: değerin gerçekten bir 16'lık sayı olup olmadığını kontrol eder
* örnek kullanım: hexa
* eklenti sürümü: v1.0
* son güncelleme: 15 Ağustos 2009
* 
* yazar: Erhan BURHAN
* email: eburhan[at]hotpop[dot]com
* adres: www.eburhan.com
*/

function fdo_hexa($arg, &$fdo)
{
    // argümanlar


    // doğrulama


    // hata çıktısı

}
?>

Şimdi bu fonksiyonun içerisini doldurmaya başlayalım. Öncelikle $arg parametresine bakalım. Bu parametre yardımıyla geçerli form alanının ismini, içerdiği değeri ve etiketini alabilirsiniz. Genellikle değeri ($value bilgisini) ve parametreleri ($param bilgisini) almanız yeterli olacaktır.

    // argümanlar
    $field = $arg['field'];     // form alanı
    $value = $arg['value'];     // form alanına girilen değer
    $label = $arg['label'];     // form alanı için bir etiket
    $param = $arg['param'];     // eğer varsa fonksiyonun parametresi

Bundan sonra ise en önemli bölüme yani doğrulama kısmına geldik. Formdan gelen değerin bir 16'lık sayı olup olmadığını kontrol ettireceğiz. Doğrulama başarılıysa true geri döndürmeliyiz.

    // doğrulama
    if (preg_match('/^0[xX][0-9a-fA-F]{8}$/', $value)) {
        return true;
    }

Ve son olarak da doğrulama işlemi başarısız olursa, gösterilecek olan hata mesajını ekleyelim:

    // hata çıktısı
    $fdo->hataEkle(__FUNCTION__, '#L alanına girilen değer hexadecimal olmalı');
    return false;

Hata mesajı eklemekle ilgili daha fazla bilgiyi hata mesajları ve hata mesajlarını değiştirme konusunda bulabilirsiniz. Eklentimiz artık hazır. Yazdığımız kodlara topluca gözatalım:

<?php
/**
* eklentinin adi: hexa
* eklenti hedefi: değerin gerçekten bir 16'lık sayı olup olmadığını kontrol eder
* örnek kullanım: hexa
* eklenti sürümü: v1.0
* son güncelleme: 15 Ağustos 2009
* 
* yazar: Erhan BURHAN
* email: eburhan[at]hotpop[dot]com
* adres: www.eburhan.com
*/

function fdo_hexa($arg, &$fdo)
{
    // argümanlar
    $field = $arg['field'];     // form alanı
    $value = $arg['value'];     // form alanına girilen değer
    $label = $arg['label'];     // form alanı için bir etiket
    $param = $arg['param'];     // eğer varsa fonksiyonun parametresi    
                             
    // doğrulama
    if (preg_match('/^0[xX][0-9a-fA-F]{8}$/', $value)) {
        return true;
    }

    // hata çıktısı
    $fdo->hataEkle(__FUNCTION__, '#L alanına girilen değer hexadecimal olmalı');
    return false;
}
?>

Adım 3: eklentiyi test etmek ve kullanmak

Artık eklentimiz hazır olduğuna göre onu kullanabiliriz. Herhangi bir form doğrulama sayfasında, kural tanımlarken doğrulama fonksiyonları arasına hexa yazmanız yeterli olacaktır. Formdan gelen değer "0xDEADBEEF" formatındaysa form doğrulanacak, aksi takdirde doğrulama başarısız olacak.

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

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

  // "deger" isimli alan için doğrulama işlemleri
  $fdo->kural('deger', 'Değer', 'gerekli|hexa');

  // formu doğrulama işlemini yap
  if( $fdo->dogrulat() ) {
      echo 'başarısız <br />';
      $fdo->yazHatalar();
  } else {
      echo 'form doğrulama başarısız!';
  }
?>

Adım 4: eklentiyi herkesle paylaşmak

Yazmış olduğunuz bu eklentiyi, formDogrula sınıfını kullanan diğer kullanıcılarla gönüllü olarak paylaşmak isterseniz Gönüllü Eklenti Gönder sayfasında bulunan yükleme formunu kullanabilirsiniz.

Adım 5: eklenti içerisinde kullanılabilir metotlar ve değişkenler

Eğer çok daha özellikli ve karmaşık eklentiler yazmak isterseniz, aşağıda listelenen metotlardan ve değişkenlerden faydalanmanız gerekecektir. Değişkenleri yalnızca bilgi edinmek için kullanmalısınız.

metotlar:

  • alanVar form alanının, form içerisinde olup olmadığını kontol eder.
  • bak herhangi bir işlem sonucunu formatlı bir şekilde yazdırır.
  • formGuncelle formdan gelen bir değeri, yenisiyle değiştirir.
  • formOrj formdan gönderilen ORJINAL verileri geri döndürür.
  • formSon formdan gelen verilerin, sınıf içerisinde işlendikten sonraki SON halini verir.
  • hataEkle hata listesine 'ham (raw) halde' yeni bir hata mesajı ekler.
  • kuralAl belli bir form alanı için tanımlanmış olan kural bilgilerini (field, label, fonks) alır.
  • kuralVar belli bir form alanı için tanımlanmış olan bir kural olup olmadığını kontrol eder.
  • parcala String tipinde gelen değeri, belirtilen bir ifadeyle parçalara ayırır.
  • uzunluk String tipindeki verinin toplam karakter sayısını yani uzunluğunu verir.

değişkenler:

  • $formOrj form ile gönderilen ORJINAL değerler
  • $formSon form ile gönderilen değerlerin SON hali (doğrulandıktan ve işlendikten sonra)
  • $formName doğrulanacak olan formun ismi (name değeri)
  • $formType doğrulanacak olan formunun metodu (post veya get)