Php 5 ile Filtreleme İşlemleri

Benzer belgeler
Internet Programming II

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

BÖLÜM 3 OPERAT A ÖRLER

Internet Programming II

Internet Programming II

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

İnternet Programcılığı Dersi 2.Dönem Ders Notu

C Programlama Dilininin Basit Yapıları

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Android Ders Notları

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

İNTERNET PROGRAMCILIĞI - II

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

GEÇERLİLİK KONTROLLERİ VALİDATİON CONTROLS. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

WEB PROGRAMLAMA. PHP Temelleri. Dr. Erman Yükseltürk

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Python Programlama Dili

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Lambda İfadeleri (Lambda Expressions)

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Web Tasarımının Temelleri

MEBİS Kullanım Kılavuzu. Öğretim Elemanı Yeni İstanbul Medipol Üniversitesi

Google Search API ile ajax arama

Blogcu Kullanma Kılavuzu

Fonksiyonlar. <? print "Ekrana yaziyorum..<br>"; $a=print "Ben de...<br>"; print $a;?> Bu kodun ciktisi: Ekrana yaziyorum.. Ben de...

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

HSancak Nesne Tabanlı Programlama I Ders Notları

Görsel Programlama 1

Tek dosyalı projeler (siteler) üretmek

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Bölüm 10: PHP ile Veritabanı Uygulamaları

2-Hafta Temel İşlemler

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

JAVASCRIPT JAVASCRIPT DİLİ

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

NESNEYE YÖNELİK PROGRAMLAMA

C#(Sharp) Programlama Dili

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

Fonksiyon nedir? <?php $deger = pow(5,3); //625 döndürür echo $deger; echo "<br>", pow(5,3);

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

Print Komutu ile Değişkenleri Yazdırmak

PHP Nedir? PHP de Temel Sözdizimi (Syntax)

İNTERNET PROGRAMCILIĞI - II

Chomsky Hiyerarşisi. Düzenli Diller ve Đfadeler 03/09/2014. Doç.Dr.Banu Diri

Kabuk Programlama (Bash)

HESAP MAKİNASI YAPIMI

JavaScript Örnekleri PDF

KURULUM KILAVUZU MART Visilabs Target Kurulum Kılavuzu

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Genel Programlama II

PROGRAMLAMAYA GİRİŞ DERS 2

Trello Nedir? Nasıl Kullanılır? Zeynel Abidin Çift

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

Nesne Tabanlı Programlama

TEMEL STRING İŞLEMLERİ

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

XSS Exploitation via CHEF

Dr. Fatih AY Tel: fatihay@fatihay.net

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

MEBWEB OKUL/KURUM WEB SİTELERİ KULLANIM KLAVUZU TEMEL İŞLEMLER

Internet Programcýlýðý (PhP, MySQL) Ders Sorumlusu Yrd.Doç.Dr.Hilmi Kuºçu

Nesne Tabanlı Programlama

İŞLETMELERDE BECERİ EĞİTİMİ DERSİ MİCROSOFT WORD 2007 ÇALIŞMALARI

Samsun Çocuk Hizmetleri İ l Koordinasyon Sekretarya Birimi

ALGORİTMA VE PROGRAMLAMA I

Word Otomatik Düzelt

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

T.C. istanbul ÜNiVERSiTESi ÖĞRENCi BiLGi SiSTEMi. ÖĞRETiM ELEMANI KULLANIM KILAVUZU

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

App İnventor-Pide Sipariş Uygulaması

Bağlantılar dışarıdan alınan verilerin (bu farklı Excel dosyası da olabilir) özelliklerini düzenlemek ve verilerin son halini almak için kullanılır.

BİL-142 Bilgisayar Programlama II

Öğr. Gör. Serkan AKSU 1

ÖĞRENCĠ BĠLGĠ SĠSTEMĠ KULLANIM KILAVUZU. 1. GĠRĠġ

1) İlk olarak oluşturduğumuz filtre adı yazılır. (örneğin tatil mesajı, taşı vb gibi.) 2) Sonra filtre için kural belirlenir.

YILDIZ TEKNİK ÜNİVERSİTESİ

Mantıksal İşlemler. 7.1 true, false, nil

BÖLÜM 23 TD F8 F4 SHIFT ESC ENTER M1.7 M1.6 M1.5 M1.4 M1.3 M1.2 M1.1 M1.0 F8 F7 F6 F5 F4 F3 F2 F1. Shift + F1

General myzyxel.com myzyxel.com Servis Yönetim Servis Name Content Filter Name Password myzyxel.com Submit Redirected URL

C Konsol Giriş Çıkış Fonksiyonları

String Sınıfını Yönetmek

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Transkript:

Php 5 ile Filtreleme İşlemleri Yazan: altayalp (izzet ögetürk) E-Posta: altayalp [a-t] gmail.com Belgede eksik ve yanlış gördüğünüz yerler için ya da görüşlerinizi belirtmek için bana e-posta adresimden ulaşabilir ve belgeyi istediğiniz platformlarda dağıtabilirsiniz. Sayfa 1 / 16

Php 5 Filter Kütüphanesi... 3 Filtreler İçin Doğrulama Sabitleri Listesi... 3 Filtreler İçin Temizleme Sabitleri Listesi... 3 filter_var() Fonksiyonu... 4 Options Eklemek... 4 Filter Kütüphanesi ile Doğrulama İşlemleri... 5 Boolean Doğrulama... 5 E-posta Adresi Doğrulama... 5 Float Doğrulama... 6 Integer Doğrulama... 6 Ip Adresi Doğrulama... 7 Regex (Düzenli ifadeler) ile Doğrulama Yapmak... 8 Url Doğrulama... 8 Filter Kütüphanesi ile Temizleme İşlemleri... 10 E-posta Adresi Temizleme... 10 Url Adresi Encode Etme... 10 Sihirli Tırnaklar (Magic Quotes) ile addshashes() Uygulama... 10 Float Ayıklama... 10 Integer Ayıklama... 11 Html ve Özel Karakterleri Temizleme... 12 Dizge Temizlemek... 12 Url Temizlemek... 13 İsteğe Bağlı Temizlik... 14 Kendi Filtremizi Yazalım... 15 Küfür Süzgeci... 15 Seo Linkler... 15 Sayfa 2 / 16

Php 5 Filter Kütüphanesi Php'nin filter eklentisi, 5.2.0 sürümü ile birlikte gelen kullanışlı bir filtreleme kütüphanesi sunar. Bu eklenti ile filtreleme işlemleri daha kolay ve pratik yoldan yapılabilir. filter_var() fonksiyonu Php'nin filter eklentisini kullanarak filtreleme işlemlerini yapmamızı sağlar. filter_var() fonksiyonu veri doğrulanırsa verinin kendisini, doğrulanamazsa false döndürür. Filtreleme işlemi iki ana tipte gerçekleşir: Doğrulama ve temizleme. (validation ve sanitization) Doğrulama (validation): Verinin belirli bir kıstasa uygun olup olmadığını kontrol eder. Veriler üzerinde herhangi bir değişiklik yapmaz. Temizleme (sanitization): Veriyi temizler, istenmeyen karakterleri yok ederek veriyi uygun kritere sokar. Yapılan işleme göre bazı bölümlerde ayıklama kelimesini de kullandığımı belirtmek istiyorum. Bayraklar (flags) isteğe bağlı olarak filtreleme işleminin davranışını değiştirmek için kullanılabilirler. Eğer yapılan işlem url filtrelemek ise FILTER_FLAG_PATH_REQUIRED eklenerek url adresinde bir path geçmesi gerektiği belirtilebilir. (Örnek: http:altayalp.com/php) Filtreler İçin Doğrulama Sabitleri Listesi FILTER_VALIDATE_BOOLEAN : Boolean veri tipini kontrol etmek için kullanılır. '1', 'true', 'on' ve 'yes' için true döndürür, diğerleri için false döndürür. Eğer FILTER_NULL_ON_FAILURE bayrak olarak geçirilirse sadece '0', 'off', 'no', '' için false ve boolean olmayan tüm değerler için NULL döner. Yukarıda filter_var() fonksiyonunun veri doğrulanırsa verinin kendisini döndüreceğini belirtmiştim, bu istisna dışında öyledir. FILTER_VALIDATE_BOOLEAN yaptığı iş gereği veri doğrulanırsa true döndürür. Fakat bunun istisna olduğunu ve diğer işlemlerde veri doğrulandığı takdirde verinin kendisinin döneceğini hatırlatırım. FILTER_VALIDATE_EMAIL : E-posta adresi doğrulamak için kullanılır. FILTER_VALIDATE_FLOAT : Float tibi değerleri doğrular. FILTER_VALIDATE_INT : Int tipi değerleri doğrular. FILTER_VALIDATE_IP : Ip adresi doğrulamak için kullanılır. FILTER_VALIDATE_REGEXP : Perl uyumlu düzenli ifade deseninizle doğrulama yapmanızı sağlar. FILTER_VALIDATE_URL : Url adresleri doğrulamak için kullanılır. Daha detaylı bilgi için kılavuz sayfasına bakmanızı öneririm http://tr.php.net/manual/tr/filter.filters.validate.php Filtreler İçin Temizleme Sabitleri Listesi FILTER_SANITIZE_EMAIL : Rakamlar, harfler ve!#$%&'*+-/=?^_`{ ~@.[]. dışındaki tüm karakterleri temizler. FILTER_SANITIZE_ENCODED : Bayrak geçirilmezse hemen, hemen urlencode() fonksiyonu ile aynı işi yapar. Url adresini encode eder. FILTER_SANITIZE_MAGIC_QUOTES : Verilere addslashes() uygular. FILTER_SANITIZE_NUMBER_FLOAT : Sayılar +- ve isteğe bağlı olarak.,ee dışındaki karakterleri temizler. Sayfa 3 / 16

FILTER_SANITIZE_NUMBER_INT : Rakam + ve - dışında tüm karakterleri temizler. FILTER_SANITIZE_SPECIAL_CHARS : Html etiketlerini ascii 32 karakterlerle encode eder ve isteğe bağlı olarak özel karakterleri temizler ya da encode eder. FILTER_SANITIZE_STRING : Etiketleri temizler ve isteğe bağlı olarak özel karakterleri encode eder. FILTER_SANITIZE_URL : Rakamlar, harfler ve $-_.+!*'(),{ \\^~[]`<>#%";/?:@&=. dışındaki tüm karakterleri kaldırır. FILTER_UNSAFE_RAW : Bayrak geçirilmezse tek başına hiçbir şey yapmaz. İsteğe bağlı olarak özel karakterleri siler ya da encode eder. Daha fazla bilgi için kılavuza bakmanızı öneririm http://tr.php.net/manual/tr/filter.filters.sanitize.php. Ayrıca FILTER_CALLBACK ile kendi filtreleme fonksiyonunuzu çağırabiliriz. filter_var() Fonksiyonu filter_var() fonksiyonunun prototipi şu şekildedir: mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) İkinci parametre yani uygulanacak filtre isteğe bağlı olsa da kullanmak gerekir zira kullanılmadığında veriye hiçbir işlem yapılmaz. Bu parametre int olarak da verilebilir. Fakat biz işlemin int id'si yerine id değerine karşılık gelen sabitleri kullanacağız. Örnek olarak 258 ile FILTER_VALIDATE_BOOLEAN aynıdır ve aynı işlemi yapar. Options Eklemek Bazı doğrulama ve temizleme işlemlerine ek olarak bir options parametresi eklenebilir. Options'ları eklerken diziler kullanılır. $veri = ''; $regex = ''; filter_var($veri, FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>$regex))); Yukarıdaki kod options eklemenin basit bir örneğidir. Bu örnek sadece options ekleme işlemini göstermek için yazıldığından bu şekilde kullanılınca Php bir hata mesajı verecektir. Burada bizi ilgilendiren 3. parametredir. 3. Parametre olarak bir dizi tanımladık 'options' anahtarına değer olarak yine bir dizi atadık, atadığımız dizide ilk anahtar seçeneği belirliyor ve bu anahtar seçeneğin kullanacağı değeri alıyor. Benzer örnekleri ilerleyen sayfalarda göreceksiniz. Sayfa 4 / 16

Filter Kütüphanesi ile Doğrulama İşlemleri Boolean Doğrulama: <pre> var_dump(filter_var('true', FILTER_VALIDATE_BOOLEAN)); var_dump(filter_var('elma', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ); </pre> Örneğin ikinci satırı gördüğünüz gibi NULL döndürdü. Yukarıda açıkladığımız gibi eğer FILTER_NULL_ON_FAILURE bayrak olarak geçirilmeseydi false dönecekti. E-posta Adresi Doğrulama: $eposta1 = 'altayalp@mailsite.com'; $eposta2 = 'altayalp[at]mailsite.com'; $eposta3 = 'altayalp.site.com'; echo filter_var($eposta1, FILTER_VALIDATE_EMAIL)? "$eposta1 doğru<br />" : "$eposta1 yanlıģ<br />"; filter_var($eposta2, FILTER_VALIDATE_EMAIL)? print "$eposta2 doğru" : print "$eposta2 yanlıģ<br />"; filter_var($eposta3, FILTER_VALIDATE_EMAIL)? print "$eposta3 doğru" : print "$eposta3 yanlıģ<br />"; var_dump(filter_var($eposta2, FILTER_VALIDATE_EMAIL)); Yukarıdaki kod altayalp@mailsite.com doğru altayalp[at]mailsite.com yanlıģ altayalp.site.com yanlıģ bool(false) Şeklinde çıktı verir. Gördüğünüz gibi e-posta adresi doğrulamak kolay ve zahmetsiz. Sizin de herkes gibi kendinize ait bir regex deseniniz olabilir fakat Php, filter kütüphanesi ile bu işi kısmen standartlaştırmış oluyor. Sayfa 5 / 16

Float Doğrulama: $sayi = 12.43; if(filter_var($sayi, FILTER_VALIDATE_FLOAT) === false) { echo 'veri float tipinde değil'; else { echo $sayi; Kodun çıktısı 12.43 olacaktır. Eğer veri float tipinde olmasaydı veri float tipinde değil şeklinde çıktı verecekti. Float doğrularken eğer. (nokta) yerine, (virgül) kullanırsanız false dönecektir. Bunu aşmak için options ekleyebiliriz. $sayi = '12,43'; if(filter_var($sayi, FILTER_VALIDATE_FLOAT, array('options'=>array('decimal'=>','))) === false) { echo 'veri float tipinde değil'; else { echo $sayi; Yukarıdaki kodun çıktısı 12,43 olacaktır. Decimal options ile. (nokta) yerine, (virgül) kullanabiliyoruz. options eklemeyi yukarıda göstermiştik. Bu örnek options ekleme işlemine somut bir örnek oldu. Integer Doğrulama: $sayi1 = '1234'; $sayi2 = 4321; $sayi3 = 1.4; filter_var($sayi1, FILTER_VALIDATE_INT)? print "$sayi1 int<br />" : print "$sayi1 int değil"; filter_var($sayi2, FILTER_VALIDATE_INT)? print "$sayi2 int<br />" : print "$sayi2 int değil"; filter_var($sayi3, FILTER_VALIDATE_INT)? print "$sayi3 int" : print "$sayi3 int değil"; Sayfa 6 / 16

Yukarıdaki kodun çıktısı: 1234 int 4321 int 1.4 int değil Şeklinde olacaktır. $sayi3 integer olmadığından false döndürür. Int doğrularken "options" ekleyerek en küçük ve en büyük sayıyı belirleyebiliriz. $enaz = 5; $encok = 10; $sayi = 15; if(filter_var($sayi, FILTER_VALIDATE_INT, array('options' => array('min_range' => $enaz, 'max_range'=> $encok ))) === false) { echo 'Girdiğiniz sayı 5 ile 10 arasında olmalıdır'; else { echo 'Doğru sayı girdiniz'; min_renge ve max_renge ile girilecek en küçük ve en büyük sayıyı belirledik. Bu şekilde 5 ve 10 doğru olarak kabul edilir 5'den küçük ve 10'dan büyük sayılar false döndürür. Ip Adresi Doğrulama: $ip1 = '127.0.0.1'; if(filter_var($ip1, FILTER_VALIDATE_IP) === false) { echo 'Ip adresi yanlıģ'; else { echo 'Ip adresi doğru'; FILTER_VALIDATE_IP, 4 adet isteğe bağlı bayrak alabilir ve bu şekilde doğrulama yapabilir. Bu bayraklar şunlardır: FILTER_FLAG_IPV4 FILTER_FLAG_IPV6 FILTER_FLAG_NO_PRIV_RANGE FILTER_FLAG_NO_RES_RANGE Sayfa 7 / 16

FILTER_FLAG_IPV6 bayrağı ile ipv6 ip adresi kontrol edelim. $ip2 = '2001:cdba:0000:0000:0000:0000:3257:9652'; if(filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) { echo 'Ip adresi yanlıģ'; else { echo 'Ip adresi doğru'; Ip adresi geçerli bir ipv6 ip adresi olduğundan kod Ip adresi doğru şeklinde çıktı verir. Regex (Düzenli ifadeler) ile Doğrulama Yapmak: $string = 'Ekmek aldım eve gidiyorum.'; if(filter_var($string, FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^ekmek(.*)/'))) === false) { echo 'Cümleniz ekmek ile baģlamalıdır.'; else { echo 'Doğru kelime'; Düzenli ifade kullanarak doğrulama yapmak için options eklemek zorunludur. Burada options olarak regexp kullandık ve değer olarak basit bir düzenli ifade kullandık. Yukarıda $string değişkeninde depolanan cümle Ekmek ile başlamazsa false döndürür ve Cümleniz ekmek ile başlamalıdır şeklinde çıktı verir. Regex ile e-posta adresi doğrulama: $eposta = 'altayalp@mailsite.com'; if(filter_var($eposta, FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^([a-z0-9_] \\- \\.)+@(([a-z0-9_] \\- )+\\.)+[a-z]{2,4$/'))) === false) { echo 'e-posta adresi yanlıģ'; else { echo 'e-posta adresi doğru'; Url Doğrulama: Sayfa 8 / 16

$url = 'http://www.altayalp.com'; if(filter_var($url, FILTER_VALIDATE_URL) === false) { echo 'Url yanlıģ'; else { echo 'Url doğru'; Url doğru formatta olduğu için ekranda Url doğru yazacaktır. FILTER_VALIDATE_URL isteğe bağlı 2 bayrak alabilir: FILTER_FLAG_PATH_REQUIRED FILTER_FLAG_QUERY_REQUIRED $url = 'http://www.altayalp.com/php'; if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) === false) { echo 'Url\'ye bir yol girilmesi gerekir'; else { echo 'Url doğru'; Eklediğimiz FILTER_FLAG_PATH_REQUIRED bayrağı url'ye bir yol tanımlamak gerektiğini belirtir. Eğer url'nin sonunda / varsa da url'yi doğru olarak kabul eder. FILTER_FLAG_QUERY_REQUIRED bayrağı ise url'de bir sorgunun olmasını zorunlu kılar. $url = 'http://www.altayalp.com/index.php?s='; if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) { echo 'Url\'ye bir sorgu eklemeniz gerekir'; else { echo 'Url doğru'; Url de sorgu olduğu için doğru kabul edilecektir. Sayfa 9 / 16

Filter Kütüphanesi ile Temizleme İşlemleri E-posta Adresi Temizleme: $string = 'altayalp()@/birsite.com'; echo filter_var($string, FILTER_SANITIZE_EMAIL); Kod dizge içindeki gereksiz harfleri temizledi ve geriye düzgün olarak altayalp@birsite.com e-posta adresini döndürdü. FILTER_SANITIZE_EMAIL dizge içindeki ()/ karakterlerini temizledi. Url Adresi Encode Etme: $url = 'http://www.altyalp.com/?s=aranan kelime'; echo filter_var($url, FILTER_SANITIZE_ENCODED); Yukarıdaki kodun çıktısı http%3a%2f%2fwww.altyalp.com%2f%3fs%3daranan%20kelime şeklinde olacaktır. Sihirli Tırnaklar (Magic Quotes) ile addshashes() Uygulama: $string = 'yazi "kelime" "elma"portakal"armut" \'karpuz\''; echo filter_var($string, FILTER_SANITIZE_MAGIC_QUOTES); echo '<br />'. addslashes($string); Yukarıdaki kodu çalıştırdığınızda iki satırında aynı olduğunu göreceksiniz. FILTER_SANITIZE_MAGIC_QUOTES addslashes() ile aynı işi yapmaktadır. Float Ayıklama: $float = 'xyz12.,34%r3'; echo filter_var($float, FILTER_SANITIZE_NUMBER_FLOAT); Sayfa 10 / 16

Yukarıdaki kodu çalıştırdığınızda çıktısının 12343 olduğunu görürsünüz. Dikkat ettiyseniz dizge içerisinde yer alan. (nokta) ve, (virgül) de silinmiştir. İsteğe bağlı olan FILTER_FLAG_ALLOW_FRACTION bayrağı ile noktanın silinmesini önleyebilirsiniz. $float = 'xyz12.,34%r3e'; echo filter_var($float, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRAC TION); Gördüğünüz gibi nokta silinmedi ve kodun çıktısı 12.343 oldu. Eğer nokta yerine virgül kullanmak isterseniz FILTER_FLAG_ALLOW_THOUSAND bayrağını kullanmalısınız. $float = 'xyz12.,34%r3e'; echo filter_var($float, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOU SAND); Yukarıdaki kod bir öncekinin aksine. (nokta) işaretini siler ve, (virgül) çıktıda görünür. Bu işlem için kullanabileceğimiz son bayrak da FILTER_FLAG_ALLOW_SCIENTIFIC bayrağıdır. Bu bayrak dizge içerisindeki e ve E harflerinin silinmesini engeller. $float = 'xyz12.,34%r3e'; echo filter_var($float, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_SCIE NTIFIC); Integer Ayıklama: $sayi = 'x-yz12.,34%r3+'; echo filter_var($sayi, FILTER_SANITIZE_NUMBER_INT); Gördüğünüz gibi FILTER_SANITIZE_NUMBER_INT + - ve rakam dışındaki karakterleri temizledi. Sayfa 11 / 16

Html ve Özel Karakterleri Temizleme: $string = '<script>alert("javascript");</script> ġıġ'; echo filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS); Yukarıdaki kodu çalıştırdığınızda ekranda <script>alert("javascript");</script> Şıİ yazdığını görürsünüz. Tarayıcınızdan sayfanın kaynağına baktığınızda ise <script>alert("javascript");</script> Şıİ şeklinde Html etiketlerinin encode edildiğini göreceksiniz. Fakat Türkçe karakterlere dokunulmamıştır. Silme ya da encode etme yoktur. Bu işlem için kullanabileceğimiz 3 bayrak bulunur. Bu bayraklar: FILTER_FLAG_STRIP_LOW FILTER_FLAG_STRIP_HIGH FILTER_FLAG_ENCODE_HIGH İsimlerinden ne iş yaptıkları az çok anlaşılıyor. Örneğin FILTER_FLAG_STRIP_HIGH bayrağını kullanırsanız dizgede bulunan Türkçe karakterlerin silindiğini görecekseniz. $string = '<script>alert("javascript");</script> ġıġ'; echo filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_HI GH); Eğer Türkçe karakterleri silmeden encode etmek istiyorsanız FILTER_FLAG_ENCODE_HIGH bayrağını kullanmalısınız. Bu bayrak Türkçe karakterleri silmek yerine Ascii 32 olarak kodlayacaktır. $string = '<script>alert("javascript");</script> ġıġçöü'; echo filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_H IGH); Kodu çalıştırıp tarayıcıdan kaynağına baktığınızda Türkçe karakterlerin kodlandığını göreceksiniz. Dizge Temizlemek: Sayfa 12 / 16

Bu işlem için FILTER_SANITIZE_STRING kullanılır. Bu işlem FILTER_SANITIZE_SPECIAL_CHARS işlemine benzemektedir. Fakat fark olarak Html karakterlerini encode etmez, siler ve özel karakterleri encode eder. $string = '<script>alert("javascript");</script>'; echo filter_var($string, FILTER_SANITIZE_STRING); Yukarıdaki kodu tarayıcıda çalıştırdığınızda <script> etiketlerinin silindiğini fakat alert("javascript"); kodunun silinmediğini görürsünüz. Tarayıcının kaynağına baktığınızda ise parantez içindeki çift tırnakların encode edildiğini göreceksiniz. Bu işlem isteğe bağlı 6 bayrak alabilir: FILTER_FLAG_NO_ENCODE_QUOTES FILTER_FLAG_STRIP_LOW FILTER_FLAG_STRIP_HIGH FILTER_FLAG_ENCODE_LOW FILTER_FLAG_ENCODE_HIGH FILTER_FLAG_ENCODE_AMP $string = '<script>alert("javascript");</script>'; echo filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTE S); Yukarıdaki kodda bayrak olarak FILTER_FLAG_NO_ENCODE_QUOTES geçiriyoruz. Kodu çalıştırdığınızda bir önceki kod ile aynı çıktıyı verdiğini görürsünüz. Fakat sayfa kaynağına baktığınızda parantez içindeki tırnak işaretlerinin encode edilmediğini göreceksiniz. Eğer & işaretini de silmek isterseniz FILTER_FLAG_ENCODE_AMP bayrağını kullanabilirsiniz. $string = '<b><script>&</script></b><br />'; echo filter_var($string, FILTER_FLAG_ENCODE_AMP); Url Temizlemek: $url = "http://www.altâayalp.comģğ"; Sayfa 13 / 16

echo filter_var($url, FILTER_SANITIZE_URL); Kodun çıktısı http://www.altayalp.com olacaktır. Cümle içerisindeki özel karakterleri (Türkçe karakterler dahil) temizleyerek temiz bir url çıktılar. İsteğe Bağlı Temizlik: Bu işlem için FILTER_UNSAFE_RAW kullanılır. Bu filtre bayraklar olmadan hiçbir şey yapmaz. İsteğe bağlı 5 adet bayrakla kullanılabilir: FILTER_FLAG_STRIP_LOW FILTER_FLAG_STRIP_HIGH FILTER_FLAG_ENCODE_LOW FILTER_FLAG_ENCODE_HIGH FILTER_FLAG_ENCODE_AMP $string = '<script>alert("javascript");</script> ġıġçöü'; echo filter_var($string, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW); Yukarıdaki kodu çalıştırdığınızda javascript kodlarının çalıştığını ve Türkçe karakterlerin ekranda yazdığını görürsünüz. $string = '<script>alert("javascript");</script> ġıġçöü'; echo filter_var($string, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_HIGH); 2. kodu çalıştırdığınızda ise javascript'in çalıştığını fakat Türkçe karakterlerin silindiğini göreceksiniz. Aşağıdaki kodları çalıştırdığınızda ise javascript kodlarının çalıştığını ve Türkçe karakterlerin encode edildiğini görürsünüz. $string = '<script>alert("javascript");</script> ġıġçöü'; echo filter_var($string, FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_HIGH); Sayfa 14 / 16

Kendi Filtremizi Yazalım: Daha önceden belirttiğimiz gibi FILTER_CALLBACK kullanarak kendi filtreleme işlemimizi yazabiliriz. Php'nin size sunduğu filtreleme seçenekleri çok çeşitli olsa da tam olarak sizin ihtiyacınıza cevap veren bir filtreleme türü olmayabilir. Örneğin bir küfür süzgeci yazmak ve girilen verileri bu süzgeçten geçirmek isteyebilirsiniz. Ya da arama motorlarıyla uyumlu seo url kullanmak isteyebilirsiniz. Örneklerimiz de tam böyle bir küfür süzgeci ve seo link fonksiyonu olacak. Küfür Süzgeci $string = 'Sen salak mısın desem, bana manyak der misin? Yoksa aptallaģır kalır mısın?'; $kufur = array('salak', 'manyak', 'aptal'); function degistir($dizge) { global $kufur; return str_replace($kufur,'***',$dizge); echo filter_var($string, FILTER_CALLBACK, array('options'=>'degistir')); $string değişkeni işlem yapacağımız veriyi tutuyor, $kufur değişkeni ise elemek istediğimiz kötü sözcükleri. Öncelikle kendi fonksiyonumuzu yazıyoruz. Global $kufur ile fonksiyon dışında tanımladığımız değişkene fonksiyon içinden erişebiliyoruz. str_replace() ile $string değişkeninde bulunan $kufur ile belirlediğimiz sözcükleri *** (üç yıldız) ile değiştiriyoruz. FILTER_CALLBACK sabiti ile options kullanarak fonksiyonumuzu filtreleme işlemi için kullanıyoruz. Kendi fonksiyonumuzu options a dahil ederken sadece fonksiyon adını yazdığımıza ve parantez kullanmadığımıza dikkat edin. Seo Linkler $string = 'Uyusunda büyüsün nenni'; function seolink($baslik) { $baslik = strtolower(strtr($baslik,'üġçġğöüöģçiğı ','USCIGOuoscigi-')); return $baslik; $seobaslik = filter_var($string, FILTER_CALLBACK, array('options'=>'seolink')); echo $string. '<br />'; echo $seobaslik. '<br />'; echo '<a href="'.$seobaslik.'.html">'.$string.'</a>'; Sayfa 15 / 16

Kodumuz küfür süzgeci için yazdığımız koda çok benziyor. seolink() fonksiyonumuzda yaptığımız işlem harfleri strtolower() fonksiyonu ile küçük harfe çevirmek ve strtr() fonksiyonu ile Türkçe karakterleri değiştirmek. Kodu çalıştırdığınızda ilk satırda normal cümle, ikinci satırda değiştirilmiş cümle ve son satırda da seo link olarak çıktı verecektir. Yukarıdaki kodda görüyorsunuz ki kendi filtreleme fonksiyonlarımızı kolaylıkla filter_var() ile kullanabiliyoruz. Elimden geldiğince sade anlatmaya ve anlaşılması kolay basit kodlarla örneklemeye çalıştım. Herhangi bir hata tespit ederseniz e-posta adresimden iletişime geçebilirsiniz. Saygılarımla altayalp Sayfa 16 / 16