PHP filter_var() Doğrulama ve temizleme filitreleri

Bu yazıda, harici verileri örnek kodla sterilize etmek ve doğrulamak için PHP filtreleri açıklanmaktadır. PHP filtresi, kullanıcı girişini kontrol etmek ve doğrulama işlemini oldukça kolay ve hızlı bir şekilde yapmak için tasarlanmış kullanışlı uzantılara sahiptir.

Web uygulamalarında veri güvenliğini sağlamak için çeşitli metotlar kullanılır. Geliştiriciler bazen hazır metotları bazen kendi geliştirdikleri veri filitreleme metotlarını tercih ederler. Veri doğrulama ve veri temizleme işlerini kullanmak için php 5.2 ve üst sürümler olmalı.

Web uygulamasında genellikle e-posta, numara, dize, IP adresi gibi kullanıcı giriş verilerini dezenfekte etmemiz ve doğrulamamız gerekir. Bu PHP filtre uzantısını kullanarak bunu kolayca başarabiliriz.

PHP Filtrelerini Kullanma:

Kullanıcı verilerini dezenfekte etmek veya doğrulamak için PHP filter_var() fonksiyonu kullanıyoruz.

sözdizimi:

filter_var (Değişken, filitre, seçenekler)

Bu fonksiyon, son iki seçeneğin isteğe bağlı olduğu üç parametreyi alır. İlk parametre, filtrelenecek değerdir, ikinci parametre uygulanacak filtrenin kimliğidir ve üçüncü parametre, filtreyle ilgili seçenek dizisidir. Nasıl çalıştığını görelim.

Doğrulama Filitreleri

PHP kılavuzunda mevcut filtrelerin bazıları

Temizleme Filitreleri

Steril filtreler kullanıldığında, seçilen desene uymayan tüm karakterler girdideki değerden alınır. Bazı sterilize filtrelerin bir listesi:

Ekstra Seçenekler

Bu doğrulama filtrelerinin davranışını değiştirmenin bazı yolları olduğu için PHP belgelerini okumak önemlidir. Doğrulama filtreleri bayrak ve seçenekleri kabul edebilir, ancak temizleyiciler yalnızca bayrakları kabul edebilir. Bu özelliklerin tümü, kılavuzdaki her filtrenin tanımlarının yanında listelenmiştir.

Bir Dizeyi Temizleyin


Aşağıdaki örnek, tüm HTML etiketlerini kaldırarak bir dizeyi dezenfekte edecektir:


$str = "<h1>selam! Bugün hava güzel</h1>"; 

$newstr = filter_var($str, FILTER_SANITIZE_STRING); 

echo $newstr;

ÇIKTI:

selam! Bugün hava güzel

Tamsayı Değerlerini Doğrula


Aşağıdaki örnek, $int değişkeninin bir tamsayı olup olmadığını kontrol etmek için filter_var() fonksiyonu kullanır.


// tamsayı değeri
$int = 20;
 
// Tamsayı değerini doğrula
if(filter_var($int, FILTER_VALIDATE_INT)){

    echo "$int geçerli bir tamsayı";

} else{

    echo "$int geçersiz bir tamsayı";
}

ÇIKTI:

20 geçerli bir tamsayı

Yukarıdaki örnekte, eğer değişken $int=0 olarak ayarlanmışsa, örnek kod geçersiz tamsayı mesajı gösterecektir. Bu sorunu gidermek için, aşağıdaki gibi 0 (sıfır) değerini açıkça test etmeniz gerekir:


// tamsayı değeri
$int =0;
 
// Tamsayı değerini doğrula

if(filter_var($int, FILTER_VALIDATE_INT) === 0 || 
filter_var($int, FILTER_VALIDATE_INT)){

    echo "<b>$int</b> geçerli bir tamsayı";

} else{

    echo "<b>$int</b> geçersiz bir tamsayı";
} 

IP Adreslerini Doğrula


Aşağıdaki örnek, $ip değişkeninin geçerli bir IP adresi olup olmadığını kontrol etmek için filter_var() fonksiyonu kullanır:


$ip = "129.0.0.1";
 
if(filter_var($ip, FILTER_VALIDATE_IP)){

    echo "Geçerli $ip  IP adresi";

} else {

    echo "Geçersiz $ip IP adres ";
}

ÇIKTI:

Geçerli 129.0.0.1 IP adresi

IPV4 veya IPV6 IP adresleri için doğrulama işlemini sırasıyla FILTER_FLAG_IPV4 veya FILTER_FLAG_IPV6 bayraklarını kullanarak da uygulayabilirsiniz . İşte bir örnek:


$ip = "129.0.0.1";
 
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){

    echo "Geçerli $ip  IP adresi";

} else {

    echo "Geçersiz $ip IP adres ";
}

E-posta Adreslerini Düzenleme ve Doğrulama

Aşağıdaki örnekte, tüm Kural dışı karakterleri $e-posta değişkeninden kaldırmak için filter_var() fonksiyonu kullanılır, ardından geçerli bir e-posta adresi olup olmadığına bakın:


$email = "webcebir>>@@example.com";
 
// Tüm Kural dışı karakterleri kaldırır.
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
 
// e-posta adresini doğrula
if(filter_var($email, FILTER_VALIDATE_EMAIL)){

    echo "<b>$email</b> Geçerli e-posta";

} else{

    echo "<b>$email</b> Geçersiz e-posta";
}
  

ÇIKTI:

webcebir@@example.com Geçersiz e-posta

URL'leri Temizle ve Doğrula


// website url
$url = "http://www.webcebi€€r.c€€om";
 
// Tüm kural dışı Karakterleri temizler
$url = filter_var($url, FILTER_SANITIZE_URL);
 
// Website url doğrula
if(filter_var($url, FILTER_VALIDATE_URL)){

    echo "<b>$url</b> Geçerli bir url";

} else{

    echo "<b>$url</b> Geçersiz bir url";
}

ÇIKTI:

http://www.webcebir.com Geçerli bir url

FILTER_FLAG_QUERY_REQUIRED Aşağıdaki örnekte gösterildiği gibi bir URL'nin sorgu dizesi içerip içermediğini veya bayrağı kullanarak olup olmadığını da kontrol edebilirsiniz :


$url = "http://www.example.com?konu=filters";
 
//Sorgu dizesi için web sitesi URL'sini doğrula
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
  
    echo "$url sorgu dizesi içerir.";
} else{
    echo "$url sorgu dizesi içermez.";
}

SQL Injeksiyon için Metinleri Düzenle

FILTER_SANITIZE_MAGIC_QUOTES filtresi , bir dizeye addslashes() işlevini gerçekleştirir . Bu filtre, önceden tanımlanmış karakterlerin önündeki ters eğik çizgileri ayarlar. SQL enjeksiyon filtrelemesi için filtreleme (örn. Tek ve çift tırnak)


$Metin = "Bu Gün'de hava'da  Güzel ";
 
if(filter_var($Metin, FILTER_SANITIZE_MAGIC_QUOTES)){

ÇIKTI:

Bu Gün\'de hava\'da Güzel

FILTER_SANITIZE_SPECIAL_CHARS XSS saldırılarını önler


FILTER_SANITIZE_SPECIAL_CHARS filtresi HTML özel karakterlerden kaçar. HTML Kodlarını (< , >) dönüştürür &lt; , &gt; Form alanında ziyaretci size mesajında kapatılmamış bir div etiketi Gönderebilir buda sizin sitede görünüm düzenini bozabilir.

POST ile gelen veri kullanımı


$name = filter_var($_POST['name'], FILTER_SANITIZE_SPECIAL_CHARS);

ÖTNEK:


$html = "<script>alert('merhaba')</script>";

$x =filter_var($html, FILTER_SANITIZE_SPECIAL_CHARS);

echo $x;

Yukarıdaki örnek veri filitreden geçmese javascript kodu alert mesajı verecektir. filitreden geçirdiğimiz için direk ekrana kodun kendini yazacak.

ÇIKTI:

<script>alert('merhaba')</script>

Bir Aralık İçinde Tamsayı Doğrulama


Aşağıdaki örnek, sağlanan değerin bir tam sayı olup olmadığının yanı sıra 0 ila 100 aralığında olup olmadığını doğrulayacaktır.


$int = 80;

 //istenen sayı 0 ile 100 arası
// Verilen sayı doğrula

if(filter_var($int, FILTER_VALIDATE_INT, array("options" => 

array("min_range" => 0,"max_range" => 100)))){

    echo "istenilen sayıyı girdiniz :$int" ;

} else{

    echo "istenilen sayıyı girmediniz: $int ";
}

ÇIKTI:

istenilen sayıyı girdiniz :80

emin 29/11/2021

phpmyadmin veri tabanında bir tablo oluşturup buraya ip,tel,email,URL gibi sütünlar oluşturdum ve verilerimi ınsert edip veritabanına yazdırdım fakat ben filtrelemeyi de filtre_var($degisken,FILTER_VALIDATE_EMAIL) değisken kısmına sütündaki değiskenimi yazıyorum anımsız diyor $email için de :email içinde bunun için ne yapmam lazım?

yönetici 01/12/2021

Değişkeni, filitre eklemeden düz dene, sonuca bak.
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

723

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.