
PHP için yapılmış güzel bir eklenti olan “filter” modülünü ele alıyoruz. Filter modülü PHP 5.2.0 versionu ile kurulu ve aktif şekilde geliyor. Bu versiondan önce filter eklentisi PECL üzerinden kurulabiliyordu. Artık PECL ile kurulan version güncellenmediğinden önerilmiyor.
Filter eklentisinin ne olduğundan kısaca söz edelim. Bu eklenti temel bir PHP eklentisidir ve birçok yazılımcının içinde kullanabileceği fonksiyonları barındırır. Filter eklentisi ile siteniz üzerinden aldığınız dataları (verileri) doğrulamanıza, yani beklediğiniz veri kriterlerini sağlayıp sağlamadığını görmenizi sağlar. Bu modülün PHP 5.2.0 ile kurulu geldiğini tekrar hatırlatalım. O yüzden kuruluma geçmeden önce, PHP versionunuzu ve PHP modülleri listenizi kontrol etmenizi öneriyoruz. (Centos 5.2 versionu PHP 5.1.6 ile bütünleşik gelmekte. Bu yüzden eklentiyi manual kurmanız gerekecek.)
PHP version ve modül kontrolü için ;
<? echo phpInfo(); ?>
kodunu çalıştırabilir, veya Linux komut satırı erişiminiz varsa;
php -m // php modülleri listesi php -v // php version bilgisi
komutlarından faydalanabilirsiniz.
PHP Filter referans listesi
PHP Filter fonksiyonu, elinizdeki verileri fonksiyonda tanımlanmış referanslardan birine göre kontrol etmenizi sağlar. Örneğin $email değişkeni içinde email adresi tutuyor olsun. PHP Filter ile bu değişkenin doğru bir email adresi içerdiğini, yani tam bir email formatını karşıladığını kontrol edebilirsiniz. Normalde çoğu programcı bu ve benzer kontrolleri regular expressions kullanarak yapıyor. Fakat regexp yazımı, anlaşılması ve kontrolü zor bir araç olması sebebiyle, sonuç olarak çoğu programcı sağlam olmayan kontrol mekanizmaları yaratıyor. Buda kodumuzu ve veri güvenliğini riske atıyor.
Aşağıdaki dosyayi bir php dosyası olarak kaydedin ve çalıştırın :
<?
echo "<h1>PHP Filter Listesi</h1>\n<table>\n<tr>\n";
echo "<td><strong>Filter ID</strong></td>\n";
echo "<td><strong>Filter Name</strong></td>\n</tr>";
foreach(filter_list() as $id =>$filter) {
echo "<tr><td>$filter</td><td>".filter_id($filter)."</td></tr>\n";
}
echo "</table>\n";
?>
Ben bu kodu çalıştırdığımda 18 adet satır görüyorum. Birin örneklersek ;
validate_ip 275
validate_ip adlı parametre (referans) ile, verinin bir IP olup olmadığının kontrolünü yapabilirsiniz. Bir IP en az ve en fazla 4 adet noktadan, en fazla 12 rakamdan, en fazla 15 karakterden oluşabilir. Örneğin 16 karakterli bi veriyi kontrol ederseniz FALSE sonuç dönecektir.
PHP Filter modülü kurulması
Adım adım, hızlıca, PHP filter modülünü kuralım :
- cd /var
- mkdir phpfilter
- yum install pcre pcre-devel php-devel
- find / -name php_pcre.h
- PHP Filter kaynak kodlarını çekin.
- Paketi açın ; tar -zxvf filter-0.11.0.tgz
- cd filter-0.11.0/
- Komutu gönderin; phpize
- ./configure
- make
- Tekrar “make” komutunu kullanın ve derlemeyi tamamlayın.
- make install
2. adımda, kurulumda ihtiyacınız olacak php_pcre.h dosyasını arıyoruz. Eğer bu dosya bulunamaz ise, PHP 5.2.6 kaynak kod indirin, biryere unzip edin ve php_pcre.h dosyasını alın.
Bu adımda filter-0.11.0/logical_filters.c:25:31: error: ext/pcre/php_pcre.h: No such file or directory hatasını alabilirsiniz. Bu noktada, 4. adımda bir yere koymuş olduğunuz php_pcre.h dosyasına ihtiyacınız var.
logical_filters.c dosyasını açın ve 25. satır dolaylarında bulunan php_pcre.h dosyasının konumunu düzeltin. Örneğin; 4. adımda elde ettiğiniz php_pcre.h’yi /lib/php_pcre.h olarak konumlandırdıysanız, buraya da bu yolu girin.
Artık PHP Filter modülünü derlediniz ve PHP’nin modül dizinine yerleştirdiniz. Tek yapmanız gereken /etc/php.ini (veya nerede ise) açmak ve boş bir satıra;
extension=filter.so
satırını eklemek. Şimdi Apache’yi yeniden başlatabilir ve modülü PHP içinde kullanabilirsiniz.
Örnek kullanım
<?
// PHP Filter testi
$veri = 'test@hotmail.com';
if(filter_var($veri,FILTER_VALIDATE_EMAIL)) {
echo 'Bu doğru bir e-mail formatıdır.';
} else {
echo 'Bu veri bir email olamaz.';
}
?>

Gayet başarılı bir makale. Ellerinize sağlık.