PHP – Filtreler

PHP 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://www.serpito.com/” şeklinde bir “url” değeri sterilize edildikten sonra , şu şekilde kayıt edilir:

http://www.serpito.com/


Çok Girdileri Filtreleme

Formlar çoğunlukla birden fazla veri alan input alanları kullanılır. filter_var() veya filter_input() fonksiyonlarını her input alanında tekrar tekrar kullanmanın anlamı yoktur.

Bu örneğimizde filter_input_array() fonksiyonu ile çok input değerlerinini filtreleyelim:

<?php$filters = array

(

“name” => array

(

“filter”=>FILTER_SANITIZE_STRING

),

“age” => array

(

“filter”=>FILTER_VALIDATE_INT,

“options”=>array

(

“min_range”=>1,

“max_range”=>120

)

),

“email”=> FILTER_VALIDATE_EMAIL,

);

$result = filter_input_array(INPUT_GET, $filters);

if (!$result[“age”])

{

echo(“Yaş değeri 1 ve 120 arasında olmalı.<br />”);

}

elseif(!$result[“email”])

{

echo(“E-Mail geçersiz.<br />”);

}

else

{

echo(“Kullanıcı girdisi geçerli”);

}

?>

Örneği Açıklayalım;

Yukarıdaki örneğimizde 3 input bölümü(name , age, email) buluyor ve bu girdiler GET metoduyla gönderiliyor;

  • özelleştirilecek olan input değişkenleri içeren bir dizi oluşturuyoruz.
  • filter_input_array() fonksiyonu çağrılıyor,
  • “age” ve “email” değişkenleri $result kümesinde içerikleri kontrol edilir. filter_input_array() fonksiyonu çağrılır ve filtreleme gerçekleşir.

filter_input_array() fonksiyonun ikinci parametresi bir dizi veya tekil bir filter ID’e sahip olabilir.


Filtre Geri Çağırma

Programcı tarafından tanımlanan bir fonksiyonu FILTER_CALLBACK filtresi ile yeniden filtreleme yapabiliriz.

Şimdi kendi fonksiyonumuzu tanımlayalım ve varolan PHP fonksiyonu içinde kullanalım.

Aşağıdaki örneğimizde , tanımlanan fonksiyonu yeniden filtreleyerek “_” karakteri ile isimlendiriyoruz:

<?phpfunction convertSpace($string)

{

return str_replace(“_”, ” “, $string);

}

$string = “Serpito_çok_yakışıklı_biri!”;

echo filter_var($string, FILTER_CALLBACK,

array(“options”=>”convertSpace”));

?>

Kodumuzun ekran çıktısı şu şekilde olur:

Serpito çok yakışıklı biri!

Örneğimizi Açıklayalım:

Örneğmiz tüm “_” karakterlerini space’e (yani boşluk) dönüştürüyor .

  • Dönüşüm için bir fonksiyon tasarla
  • filter_var() fonksiyonunu FILTER_CALLBACK filtresi ile birlikte dizi işleminde kullanılıyor.

4 thoughts on “PHP – Filtreler

  • benim sormak istediğim nokta şu:
    şimdi kullanıcıdan bir yorum,kullanıcı adı, ziyaretçi defterine not bırakma gibi şeyeleri
    isteriz.
    kullanıcı için hazırlanan ara yüzde
    gibi giriş kutusu ile
    ilede notunu alıyoruz. editör programlarını kullanarak textare dan gönderilen kodlamalar devre dışı bıraklıyor. peki text girişi için bunu nasıl yapa bilirim. kendimce gönderilen iletinin içindeki işaretlerini # e çevitiyorum ama ben bunu istemiyorum aynı textarea daki gibi iletimin hiçbir değişikliğe uğramadan gönderilmesini ve veritasbanından çekilirkende herhangi bir HTML,SQL,PHP,ASP vs. algılanmadan direk text olarak ekrana ayazılmasını istiyorum. bunu nasıl sağlayabilirm

  • <?PHP
    for($i=1;$i<100;$i++)
    echo “deneme”;
    ?>
    gibi ekodların engellenemsi gbimi

  • hocam eline sağlık ama madem bu kadar uğraş vermişsin bari tamamen kendin yazsaydın kodlarıda bizde farklı örneklerden görerek anlaya bilseydik olayı. ben w3school die bi siteden çalışıyorum anlamadıgım yerleride sizin gibi Türkçe sitelerden bakıyorum ama örnekler hep aynı sanki ordan kopyalanıyor. yine siz bazı değişiklikler yapmışınız,bazıları direk copy-paste olayına girmiş. burdan belirtmek istedim.. Teşekkür ederim, kolay gelsin…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir