Ziyaretçilerden gelen verilerin istediğimiz formata uygunluğunu kontrol etmeliyiz ki, güvenlik açığı yaratmayalım. E-postaları, web adreslerini, bilgi girişlerini ve dahasını 🙂 Her birine uygun farklı fonksiyonlar yazıldı bu vakte kadar. Ancak PHP 5.2.0 ve üstü sürümlerde bu fonksiyonlara gereksinim azaldı. Çünkü PHP filtreleme fonksiyonları standart oldu.
PHP filtre fonksiyonları
PHP filtre fonksiyonları 5.2.0 ve üstü sürümlerde hazır olarak bulunuyor.
filter_has_var
Bu fonksiyon ile aramakta olduğunuz değişkenin ilgili değişken türü içerisindeki varlığını sorgulayabiliyorsunuz. Yani,
demek,
oluyor. Yollanan POST verileri içerisinde kullaniciadi değişkeninin varlığını sorguluyoruz. Fonksiyondaki ilk parametreye değişken türünü ikincisine ise adını giriyoruz.
Girebileceğiniz türler şunlar oluyor:
- INPUT_GET
- INPUT_POST
- INPUT_COOKIE
- INPUT_SERVER
- INPUT_ENV
filter_id
Filtrelerin ID numaralarını verir. filter_ list ile elde edilecek dizi değişkendeki numaralar filtre ID numarası değildir.
echo filter_id('number_int');
Yukarıdaki gibi işlem ile number_int filtresinin ID numarası olan 519 rakamını elde ederiz. Eğer geçerli bir filtre adı girmezsek, herhangi bir rakam dönmeyecektir.
filter_input_array
Bu fonksiyon ile birden fazla kontrol yapabiliyorsunuz. Uzunca örnek girmek istemiyorum. Şuradaki örneğe bakalım. Görüldüğü için POST değerleri geçici olarak tanımlanmış ve her bir POST değeri için filtrelemeler dizi değişken olarak tanımlanmış 😉
filter_input
Tek bir veri için filtreleme işlemi yapılabiliyor.
Search again.";
?>
sonrasında elde edeceğimiz çıktı:
[CODE]You have searched for Me & son.
Search again.[/CODE]
olacaktır.
filter_list
Kullanılabilecek tüm filtre türleri dizi değişken olarak listelenir. Örnek kullanım,
print_r(filter_list());
kodlanarak görülebilir ve,
[CODE]Array
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_url
[5] => validate_email
[6] => validate_ip
[7] => string
[8] => stripped
[9] => encoded
[10] => special_chars
[11] => unsafe_raw
[12] => email
[13] => url
[14] => number_int
[15] => number_float
[16] => magic_quotes
[17] => callback
)[/CODE]
elde edilir.
filter_var_array
filter_input_array olandan farkı değişkenleri uygulanmasıdır. Gerisi filter_input_array fonksiyonu ile aynıdır.
filter_var
Bu fonksiyon da filter_input ile aynıdır ancak sadece değişkenlere uygulanır.
Sabitler
Her fonksiyon ile birçok sabit kullanılabiliyor. Bu sabitler IP adresinin geçerlilik kontrolünü yapabildiği gibi, verinin dizi değişken olup olmadığı gibi bilgileri de kontrol edebiliyor. Tüm sabitleri buraya yazarak açıklamam mümkün değil, o nedenle Predefined Constants adresine bakmanızı rica ediyorum.
Sonuç Olarak
Web yazılımlarımızda tüm bu kontrolleri yapmalıyız ki, kararlı ve problemsiz veriler elde edelim. Ancak tüm bu kontrolleri yapmak için uzun uzun kod yazmak gerekiyordu ve günü geliyor üşenebiliyordunuz. Ancak PHP 5.2.0 sürümüyle birlikte gelen filtreleme fonksiyonları tüm bu zahmetten kurtarıyor.
Hala PHP 4.x.x sürümü ile çalışan alan sağlayıcı firmalar bulunuyor mu bilmiyorum. Ancak, artık PHP 5 sürümlerine geçmenin vakti geldi ve geçiyor. Aynı durum MySQL için de geçerli 😉