[postlink]
https://web-programcisi.blogspot.com/2012/01/php-filtreler.html[/postlink]
HP filtresi , kullanıcı girdileri gibi güvensiz kaynaklardan alınan verileri filtreleme işlemini gerçekleştirir.
PHP Filtre Nedir?
Güven vermeyen kaynaklardan alınan verileri filtreleme yapmamız gerekir.
Verileri doğrulama, test etme ve filtreleme tüm web uygulamalar için önemli bir aşamadır.
Php filter özelliği , kolay kullanıma sahip bir şekilde diyazn edilmiştir.
Neden Filtre Yapmalıyız?
Çoğunlukla tüm web uygulamaları harici veri girişleri üzerine işlem yapmaktadır.Genellikle kullanıcıdan yada başka bir uygulamadan alınan veriler kullanılır. Filtreleme yaparak projelerimize güvenilir ve doğru bir veri giriği sağlarız.
Dışardan alınan tüm verileri filtreleme yapmanız tavsiyemdir!!
İnput filtreleme web uygulamaları için en önemli güvenlik aşamasıdır.
Harici Veri Ne Demektir?
- Formdan alınan veriler
- Çerezler(Cookies)
- Web Servis Verileri
- Sunucu Değişkenleri
- Veritabanı sorgu sonuçları
Fonksiyon ve Filtreler
Bir değişkeni filtrelemek için aşağıdaki filter fonksiyonlar kullanılır:
- filter_var() – özel bir filter ile bir değişkeni filtreler
- filter_var_array() – Birden fazla veriyi , aynı veya farklı filtreler ile filtreler
- filter_input – Bir girilen veriyi alır ve filtreler
- filter_input_array – Birden fazla girdileri alır , aynı veya farklı filtreler ile filtreler
Aşağıdaki örnekte, integer sayıyı filter_var() fonksiyonu ile filtreliyoruz,bakalım;
<?php$int = 123;if(!filter_var($int, FILTER_VALIDATE_INT)){echo(“integer geçersiz”);}else{echo(“integer geçerli”);}?>
Yukardaki kod, “FILTER_VALIDATE_INT” özelliğini kullanarak değişkeni filtreler.İnteger sayının geçerli olduğunu belirttikten sonra , ekrana “integer geçerli” yazdırır.
Eğer integer değişkenimiz yerine “123abn” gibi bir değer deneseydik, ekran çıktımız, “integer geçersiz” yazılacaktı.
Doğrulama ve Sterilize Etme
İki filter türü vardır;
Filtre Doğrulama:
- Kullanıcı girdilerini doğrulamak için kullanılır
- Katı format format kuralları (URL yada E-Mail değerleri gibi)
- Başarı halinda beklenen durum döner, aksi takdirde FALSE değeri döndürür.
Filtreleri Siterilize Etme
- string içinde izin verilen veya izinsiz karakterleri ayırır
- Veri format kuralı yok
- Herzaman string döndürür
Seçenekler ve Flag
- Seçenekler ve Flaglar filtrelere eklenerek özelleştirir.
- Farkli filtreler farklı seçeneklere ve flaglara sahiptir.
Aşağıdaki örneğimizde , bir integer(tamsayı) değerini fiter_var() fonksiyonu min_range ve max_range secenekleri ile doğrulayalım:
<?php$var=300;$int_options = array(“options”=>array(“min_range”=>0,“max_range”=>256));if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){echo(“Integer geçersiz”);}else{echo(“Integer geçerli”);}?>
Yukarda tasarladığımız kod örneğinde options dizisi ile ilişkili seçenekleri kullandık.Seçenek değil de sadece bir flag kullanıyor ise dizi kullanmamıza gerek yoktur.
integer değeri “300″ , bu değer verilen özelliklere(min_range , max_range) uymadığı için “integer geçersiz” çıktısını göreceğiz.
Input(girdi) Doğrulama
Tasarladığımız formdan alına verileri doğrulayalım.Öncelikle girilen verilerde aradığımız veri özelliklerini arayıp ve onaylamamız gerekir.
Daha sonra , verileri filter_input() fonksiyonu ile filtreleyim.
Aşağıdaki örnekte, input verisi olan “mail” stringi PHP dosyasına gönderiliyor; şöyleki:
<?phpif(!filter_has_var(INPUT_GET, “email”)){echo(“Girilen veri türü yanlış”);}else{if (!filter_input(INPUT_GET, “email”, FILTER_VALIDATE_EMAIL)){echo “E-Mail geçersiz”;}else{echo “E-Mail geçerli”;}}?>
Örneği Açıklayalım;
Örneğimizde bir “email” değişkenini GET metodu kullanarak gönderiyor.
- “email” girdi verisi “GET” metoduyla tanımlanan verü türüne uyuyor mu kontrol ediyor.
- İnput değişkeni uyuyorsa, email adresinin doğruluğunu kontrol ediyor.
Input Sterilize
Formdan gelen URL adresini sadeleştirelim.
Önce aranılan verinin bulunduğunu kontrol ediyoruz;
Girilen veriyi filter_input() fonksiyonu ile sterilize ediyoruz.
Örneğimizde , “url” verisi PHP sayfasına gönderiliyor:
<?phpif(!filter_has_var(INPUT_POST, “url”)){echo(“Girilen veri türü yanlış”);}else{$url = filter_input(INPUT_POST,“url”, FILTER_SANITIZE_URL);}?>
Örneği Açıklayalım;
“POST” metoduyla , alınan verimizi sayfaya gönderiyoruz.:
- girdi verisinin varlığını kontrol ediyoruz.
- veri bulundu ise,URL değerinin siterilize ediyoruz, URL standartlarına uymayan karakterleri temizleyerek URL değerini gönderiyoruz.
“ http://web-programcisi.blogspot.com/ ” şeklinde bir “url” değeri sterilize edildikten sonra , şu şekilde kayıt edilir: