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.
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.
Ş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;
}
?>
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!';
}
?>
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.
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:
Email listesi / Ne dediler / İletişim / Hakkında / Haritalar