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ı 5.2.0 ve üstü sürümlerde hazır olarak bulunuyor.
Bu fonksiyon ile aramakta olduğunuz değişkenin ilgili değişken türü içerisindeki varlığını sorgulayabiliyorsunuz. Yani,
<?php filter_has_var(INPUT_POST, 'kullaniciadi') ?>
demek,
<?php isset($_POST['kullaniciadi']) ?>
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:
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.
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ış
Tek bir veri için filtreleme işlemi yapılabiliyor.
<?php $search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS); $search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED); echo "You have searched for $search_html.\n"; echo "<a href='?search=$search_url'>Search again.</a>"; ?>
sonrasında elde edeceğimiz çıktı:
You have searched for Me & son. <a href='?search=Me%20%26%20son'>Search again.</a>
olacaktır.
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,
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
)
elde edilir.
filter_input_array olandan farkı değişkenleri uygulanmasıdır. Gerisi filter_input_array fonksiyonu ile aynıdır.
Bu fonksiyon da filter_input ile aynıdır ancak sadece değişkenlere uygulanır.
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.
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
Bu yazı 18 Eylül 2008, 12:08 tarihinde yazılmış olup bu zamana kadar 928 kez görüntülenmiştir
En son ise 3 Ekim 2008, 16:55 tarihinde güncellenmiştir
Bu yazı 2 adet yorum almıştır ve bunların tamamı görüntülenmektedir.
Bak bunu bilmiyordum.. Teşekkür ettim..
Yazını çok beğendim. Yeni yazılarının e-posta adresime gelmesini istiyorum :)