xranzei 1
xranzei
zendor2 1
zendor2
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – Filtreler

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,442
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 8 Gün
Başarım Puanı
1,051
MmoLira
695,207
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

cats.jpg


İstemci isteği biçiminde alınan girdi verilerinin bir PHP uygulamasında işlenmeden önce doğrulanması önemlidir. Giriş doğrulamasını gerçekleştirmek için, PHP'deki filtre uzantısı, önceden tanımlanmış filtre sabitleri ve bayrakları tarafından desteklenen bir dizi filtre işlevi sağlar. PHP kitaplığının filtre uzantısı ayrıca GET veya POST yöntemleriyle alınan girdinin temizlenmesine yardımcı olur.

Filtre uzantısı, SQL enjeksiyonu ve siteler arası betikleme gibi güvenlik açıklarının önlenmesine yardımcı olan güçlü bir özelliktir. Uzantının iki tür filtresi vardır.

Doğrulama Filtreleri

Doğrulama filtreleri, verilerin belirli ölçütleri karşılayıp karşılamadığını kontrol eder. Örneğin, kullanıcının HTML formunda bir e-posta alanını doğru şekilde girdiğinden emin olmak istersiniz. FILTER_VALIDATE_EMAIL, verilerin geçerli bir e-posta adresi olup olmadığını belirler. Ancak doğrulama filtreleri, verilerin kendisini değiştirmez.


Dezenfeksiyon Filtreleri

Temizleme, istenmeyen karakterleri girdiden kaldırma sürecini ifade eder. Bu nedenle, istenmeyen karakterleri kaldırarak verileri değiştirebilir. Örneğin, FILTER_SANITIZE_EMAIL'i geçirmek, doğrulama yapmadan bir e-posta adresinin içermesi uygun olmayan karakterleri kaldıracaktır.

Filtre Bayrakları

PHP'deki filtre uzantısı, aşağıdaki gibi bir dizi filtre bayrağı tanımlar:

Sr.NoKimlik ve Açıklama
1FILTER_FLAG_STRIP_LOW
Sayısal değeri <32 olan karakterleri siler.
2FILTER_FLAG_STRIP_HIGH
Sayısal değeri >127 olan karakterleri siler.
3FILTER_FLAG_STRIP_BACKTICK
Ters tırnak karakterlerini siler.
4FILTER_FLAG_ALLOW_FRACTION
Sayılarda kesir ayırıcı olarak nokta (.) kullanılmasına izin verir.
5FILTER_FLAG_ALLOW_THOUSAND
Sayılarda binler basamağını ayırmak için virgül (,) kullanılmasına izin verir.
6FILTER_FLAG_ALLOW_SCIENTIFIC
Sayılarda bilimsel gösterim için e veya E'ye izin verir.
7FILTER_FLAG_NO_ENCODE_QUOTES
Bu bayrak mevcutsa, tek (') ve çift (") tırnak işaretleri kodlanmayacaktır.
8FILTER_FLAG_ENCODE_LOW
Sayısal değeri <32 olan tüm karakterleri kodlar.
9FILTER_FLAG_ENCODE_HIGH
Sayısal değeri >127 olan tüm karakterleri kodlar.
10FILTER_FLAG_ENCODE_AMP
Ve işaretini (&) kodlar.
11FILTER_NULL_ON_FAILURE
Tanınmayan değerler için null döndürür.
12FILTER_FLAG_ALLOW_OCTAL
Sıfır (0) ile başlayan girdileri sekizli sayı olarak kabul eder.
13FILTER_FLAG_ALLOW_HEX
0x veya 0X ile başlayan girdileri onaltılık sayı olarak kabul eder.
14FILTER_FLAG_EMAIL_UNICODE
E-posta adresinin yerel kısmının Unicode karakterleri içermesine izin verir.
15FILTER_FLAG_IPV4
IP adresinin IPv4 formatında olmasını sağlar.
16FILTER_FLAG_IPV6
IP adresinin IPv6 formatında olmasını sağlar.
17FILTER_FLAG_NO_PRIV_RANGE
Aşağıdaki özel IPv4 aralıkları için doğrulama başarısız oldu: 10.0.0.0/8, 172.16.0.0/12 ve 192.168.0.0/16.
18FILTER_FLAG_NO_RES_RANGE
Aşağıdaki ayrılmış IPv4 aralıkları için doğrulama başarısız oldu: 0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8 ve 240.0.0.0/4.
Aşağıdaki ayrılmış IPv6 aralıkları için doğrulama başarısız oldu: ::1/128, ::/128, ::ffff:0:0/96 ve fe80::/10.
19FILTER_FLAG_GLOBAL_RANGE
Küresel olmayan IPv4/IPv6 aralıkları için doğrulama başarısız oldu
20FILTER_FLAG_SCHEME_REQUIRED
URL'nin bir şema parçası içermesini gerektirir.
21FILTER_FLAG_HOST_REQUIRED
URL'nin bir ana bilgisayar kısmı içermesini gerektirir.
22FILTER_FLAG_PATH_REQUIRED
URL'nin bir yol kısmı içermesini gerektirir.
23FILTER_FLAG_QUERY_REQUIRED
URL'nin bir sorgu dizesi içermesini gerektirir.
24FILTER_REQUIRE_SCALAR
Değerin skaler olması gerekir.
25FILTER_REQUIRE_ARRAY
Değerin bir dizi olması gerekir.
26FILTER_FORCE_ARRAY
Değer bir skaler ise, skaler değeri tek eleman olarak içeren bir dizi olarak ele alınır.

Filtre Fonksiyonları

Filtre uzantısı aşağıdaki filtre işlevlerini içerir:

Sr.NoKimlik ve Açıklama
1filter_has_var()
Belirtilen türde değişkenin var olup olmadığını kontrol eder
2filter_id()
Adlandırılmış bir filtreye ait filtre kimliğini döndürür
3filter_input_array()
Harici değişkenleri alır ve isteğe bağlı olarak filtreler
4filter_input ()
Adına göre belirli bir harici değişkeni alır ve filtreler
5filter_list()
Desteklenen tüm filtrelerin bir listesini döndürür
6filter_var_array()
Birden fazla değişken alır ve isteğe bağlı olarak bunları filtreler
7filter_var()
Bir değişkeni belirtilen bir filtreyle filtreler

Önceden Tanımlanmış Sabitler

Yukarıdaki fonksiyonlar, girdinin filtreleme amacıyla PHP betiğine nasıl sağlandığını temsil eden önceden tanımlanmış numaralandırılmış sabitlerden biri olan input_type adı verilen bir parametre kullanır.

DevamlıTürler
INPUT_POST (int)
POST Değişkenleri
INPUT_GET (int)
GET Değişkenleri
INPUT_COOKIE (int)
ÇEREZ Değişkenleri
INPUT_ENV (int)
ENV Değişkenleri
INPUT_SERVER (int)SUNUCU Değişkenleri
INPUT_SESSION (int)OTURUM Değişkenleri
INPUT_REQUEST (int)İSTEK Değişkenleri

filter_has_var() fonksiyonu

filter_has_var() fonksiyonu belirtilen tipte bir değişkenin var olup olmadığını kontrol eder.

filter_has_var(int $input_type, string $var_name): bool

input_type, önceden tanımlanmış INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER veya INPUT_ENV sabitlerinden biridir; var_name parametresi ise kontrol edilecek değişkenin adıdır. İşlev, başarılı olduğunda true, başarısız olduğunda false döndürür.

Örnek

Aşağıdaki PHP betiğini XAMPP sunucusunda ziyaret edin.

PHP:
<?php
   if (!filter_has_var(INPUT_GET, "email")) {
      echo("Email not found");
   } else {
      echo("Email found");
   }
?>

Aşağıdaki çıktıyı üretecektir:

adresini ziyaret edin.


filter_input() fonksiyonu

filter_input() fonksiyonu, adına göre belirli bir harici değişkeni alır ve uygulanan filtre sabitine göre filtreler.

filter_input(
int $type,
string $var_name,
int $filter = FILTER_DEFAULT,
array|int $options = 0
): mixed

Tür parametresi INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER veya INPUT_ENV sabitlerinden biridir. İkinci parametre, alınacak değişkenin adı olan var_name'dir. Uygulanacak filtreyi kullanabilirsiniz. Önceden tanımlanmış filtre bayraklarından herhangi birini kullanın. Atlanırsa, FILTER_DEFAULT kullanılacaktır

Fonksiyon, başarılı olması durumunda istenen değişkenin değerini, filtre başarısız olursa false değerini veya var_name değişkeni ayarlanmamışsa null değerini döndürür.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
      echo("Email is not valid");
   } else {
      echo("Email is valid");
   }
?>

Aşağıdaki çıktıyı üretecektir:

URL'sini kullanırsanız,

Email is valid

URL ise,

Email is not valid

POST yöntemi aracılığıyla alınan girdiyi doğrulamak için INPUT_POST türünü de kullanabilirsiniz.

PHP:
<?php
   if (!filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL)) {
      echo("Email is not valid");
   } else {
      echo("Email is valid");
   }
?>

Verileri POST isteğiyle geçirmek için komut istemini açın ve aşağıdaki CURL komutunu kullanın:

curl -X POST -d "{\"email\": \"a@b.com\"}"

filter_list() fonksiyonu

filter_list() fonksiyonu desteklenen tüm filtrelerin bir listesini döndürür:

filter_list(): array

Örnek

Fonksiyon, desteklenen tüm filtrelerin adlarını içeren bir dizi döndürür; böyle bir filtre yoksa dizi boştur.

PHP:
<?php
   print_r(filter_list());
?>

Aşağıdaki çıktıyı üretecektir :

Array
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_domain
[5] => validate_url
[6] => validate_email
[7] => validate_ip
[8] => validate_mac
[9] => string
[10] => stripped
[11] => encoded
[12] => special_chars
[13] => full_special_chars
[14] => unsafe_raw
[15] => email
[16] => url
[17] => number_int
[18] => number_float
[19] => add_slashes
[20] => callback
)

filter_input_array() fonksiyonu

filter_input_array() harici değişkenleri alır ve isteğe bağlı olarak bunları filtreler.

filter_input_array(int $type, array|int $options = FILTER_DEFAULT,
bool $add_empty = true): array|false|null

Bu fonksiyon, filter_input() fonksiyonunu tekrar tekrar çağırmadan çok sayıda değeri almak için kullanışlıdır.

Tür parametresi INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER veya INPUT_ENV'den biridir.

Seçenekler parametresi argümanları tanımlayan bir dizidir. Geçerli bir anahtar, değişken adı içeren bir dizedir ve geçerli bir değer, bir filtre türü veya isteğe bağlı olarak filtreyi, işaretleri ve seçenekleri belirten bir dizidir. Bu parametre ayrıca bir filtre sabiti tutan bir tam sayı olabilir. Daha sonra giriş dizisindeki tüm değerler bu filtre tarafından filtrelenir.

İşlev, başarılı olduğunda istenen değişkenlerin değerlerini içeren bir dizi döndürür. Tür tarafından belirtilen giriş dizisi doldurulmamışsa, işlev FILTER_NULL_ON_FAILURE bayrağı verilmemişse null, aksi takdirde false döndürür. Diğer başarısızlıklar için false döndürülür.

Örnek

HTTP isteğine bir dizi eklemek için "hello.html" dosyasında aşağıdaki HTML formunu kullanırız ve bunu POST yöntemiyle göndeririz.

<!DOCTYPE html>
<html>
<body>
<h1>Filter Input Array</h1>
<form action="hello.php" method="POST">
<p><label for="email">Enter your email:</label>
<input type="text" id="email" name="email"></p>
<p><label for="age">Enter your age<label>
<input type = "text" id="age" name="age"></p>
<input type="submit">
</form>
</body>
</html>

Giriş dizisini doğrulamak için PHP betiği aşağıdaki gibidir:

PHP:
<?php
   $filters = array (
      "age" => array ("filter"=>FILTER_VALIDATE_INT,     
         "options"=>array("min_range"=>20,"max_range"=>40) ),
      "email" => FILTER_VALIDATE_EMAIL
   );
   print_r(filter_input_array(INPUT_POST, $filters));
?>

HTML formunu açın ve yaş olarak 30, e-posta olarak abc@example.com girin , sonuç bir dizi olacak ve her iki girdi de doğrulanacaktır.

 
Paylaşım için teşekkürler. :)
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst