FILTER_VALIDATE ile işinizi kolaylaştırın



Php Programlama konusundaki bu yazı 01 Şubat 2009 Pazar günü yazılmış.
Bu içeriğin eklenme tarihinin üzerinden 1 yıldan fazla zaman geçmiş.İçerdiği bazı bilgilerin ve yöntemlerin güncellenmiş olma ihtimalini göz önünde bulundurun.
724

Web uygulaması geliştirmenin en sıkıcı taraflarından birisi Formlardan gelen verileri olması gereken şekilde olup olmadığı,değilse çevrildiğikontrollerin yazılmasıdır.PHP 5 ile gelen filter_var fonksiyonu bu işkenceyi önemli ölçüde gidermekte. 

Örneğin php 5 öncesi sürümlerde formdan gelen bir email verisinin gerçekten bir email oldugunu anlamak için preg_match lar ile regex kontrolleri yaparak bir fonksiyonda birleşiriyorduk, hem zaman hemde okunabilirlik kaybına yol açan bu işlem yerine artık php 5 ile aşağıdaki gibi bir kullanım bize sunuldu.

$email = "hakan@hakanaksan.com.tr";   
  
if(filter_var($email, FILTER_VALIDATE_EMAIL))   
    echo "Girilen Email Adresi Geçerlidir";   
else  
    echo "Girilen Email Adresi Geçersizdir."; 

filter_var yukarıda oldugu gibi bir çok kontrolde işimize yarayacak bir fonksiyondur.
Elimizdeki bir URL bilgisinin kontrolünü filer_var kullanarak şu şekilde kolayca kontrol edebiliriz.

$siteAdresi = "http://www.hakanaksan.com.tr";   
if(filter_var($siteAdresi, FILTER_VALIDATE_URL))   
   echo "Bu bir URL bilgisidir.";   
else  
   echo "Geçersiz bir URL bilgisidir.";  

Verimizin doğru bir IP bilgisi olup olmadığını kontrol etmemek bazı senaryolarda ciddi problemler doğurabiliyor bunun için iki ayrı seçeneğimiz bulunuyor IPv4 ve IPv6 şeklinde kontrol yapma imkanı sunulmuş, inceleyip görelim.

$ipv4 = "192.168.0.4";   
$ipv6 = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";   
  
if(filter_var($ipv4, FILTER_VALIDATE_IP))   
     echo "IP adresi doğrudur";   
else  
     echo "Geçersiz IP adresi";   
  
//Not : ipv6 içinde aynı kontrol geçerlidir.  

Gelen verilerimizin hangi tipten olduğunu öğrenmek için topluca aşağıdaki örneklere bakmakta yarar vardır.

<?   
//Verimizin bir tamsayı olup olmadığına bakıyoruz   
$veri = 33;   
if (filter_var($veri, FILTER_VALIDATE_INT))   
    echo "Int tipinden bir deger.";   
else    
     echo "Deger Int tipinden degildir.";   
  
//Verimizin ondalık bir sayı olup olmadığına bakıyoruz   
$veri = 33.3;   
if (filter_var($veri, FILTER_VALIDATE_FLOAT))   
    echo "Ondalık sayı tipinden bir deger.";   
else    
     echo "Ondalık sayı tipinden degildir.";   
  
//Verimizin Boolean tipinden olup olmadığına bakıyoruz   
$veri = true;   
if (filter_var($veri, FILTER_VALIDATE_BOOLEAN))   
    echo "Boolean tipinden bir deger.";   
else    
     echo "Boolean tipinden degildir.";   
?>  

İlerleyen günlerde filter_var'ın diğer nimetleri SANITIZE ve FLAGS özelliklerine değinip değişik örnekler vereceğim.

Hepinize iyi çalışmalar diliyorum.

Hakan Başar AKSAN
hakan@hakanaksan.com.tr

Bu yazıya 1 adet yorum yapılmış

  1. Halil SAĞLAM diyorki:
    17 Temmuz 2011 Pazar

    Teşekkürler...

Yorum göndermek istiyorsanız




  1. Yorum nahiyemde sıkıntı var, şimdilik yorum alamıyorum,
    hakan@hakanaksan.com.tr yi kullanınız.