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.
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