- 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
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!
İ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.No | Kimlik ve Açıklama |
|---|---|
| 1 | FILTER_FLAG_STRIP_LOW Sayısal değeri <32 olan karakterleri siler. |
| 2 | FILTER_FLAG_STRIP_HIGH Sayısal değeri >127 olan karakterleri siler. |
| 3 | FILTER_FLAG_STRIP_BACKTICK Ters tırnak karakterlerini siler. |
| 4 | FILTER_FLAG_ALLOW_FRACTION Sayılarda kesir ayırıcı olarak nokta (.) kullanılmasına izin verir. |
| 5 | FILTER_FLAG_ALLOW_THOUSAND Sayılarda binler basamağını ayırmak için virgül (,) kullanılmasına izin verir. |
| 6 | FILTER_FLAG_ALLOW_SCIENTIFIC Sayılarda bilimsel gösterim için e veya E'ye izin verir. |
| 7 | FILTER_FLAG_NO_ENCODE_QUOTES Bu bayrak mevcutsa, tek (') ve çift (") tırnak işaretleri kodlanmayacaktır. |
| 8 | FILTER_FLAG_ENCODE_LOW Sayısal değeri <32 olan tüm karakterleri kodlar. |
| 9 | FILTER_FLAG_ENCODE_HIGH Sayısal değeri >127 olan tüm karakterleri kodlar. |
| 10 | FILTER_FLAG_ENCODE_AMP Ve işaretini (&) kodlar. |
| 11 | FILTER_NULL_ON_FAILURE Tanınmayan değerler için null döndürür. |
| 12 | FILTER_FLAG_ALLOW_OCTAL Sıfır (0) ile başlayan girdileri sekizli sayı olarak kabul eder. |
| 13 | FILTER_FLAG_ALLOW_HEX 0x veya 0X ile başlayan girdileri onaltılık sayı olarak kabul eder. |
| 14 | FILTER_FLAG_EMAIL_UNICODE E-posta adresinin yerel kısmının Unicode karakterleri içermesine izin verir. |
| 15 | FILTER_FLAG_IPV4 IP adresinin IPv4 formatında olmasını sağlar. |
| 16 | FILTER_FLAG_IPV6 IP adresinin IPv6 formatında olmasını sağlar. |
| 17 | FILTER_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. |
| 18 | FILTER_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. |
| 19 | FILTER_FLAG_GLOBAL_RANGE Küresel olmayan IPv4/IPv6 aralıkları için doğrulama başarısız oldu |
| 20 | FILTER_FLAG_SCHEME_REQUIRED URL'nin bir şema parçası içermesini gerektirir. |
| 21 | FILTER_FLAG_HOST_REQUIRED URL'nin bir ana bilgisayar kısmı içermesini gerektirir. |
| 22 | FILTER_FLAG_PATH_REQUIRED URL'nin bir yol kısmı içermesini gerektirir. |
| 23 | FILTER_FLAG_QUERY_REQUIRED URL'nin bir sorgu dizesi içermesini gerektirir. |
| 24 | FILTER_REQUIRE_SCALAR Değerin skaler olması gerekir. |
| 25 | FILTER_REQUIRE_ARRAY Değerin bir dizi olması gerekir. |
| 26 | FILTER_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.No | Kimlik ve Açıklama |
|---|---|
| 1 | filter_has_var() Belirtilen türde değişkenin var olup olmadığını kontrol eder |
| 2 | filter_id() Adlandırılmış bir filtreye ait filtre kimliğini döndürür |
| 3 | filter_input_array() Harici değişkenleri alır ve isteğe bağlı olarak filtreler |
| 4 | filter_input () Adına göre belirli bir harici değişkeni alır ve filtreler |
| 5 | filter_list() Desteklenen tüm filtrelerin bir listesini döndürür |
| 6 | filter_var_array() Birden fazla değişken alır ve isteğe bağlı olarak bunları filtreler |
| 7 | filter_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:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
adresini ziyaret edin.Email found
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:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
URL'sini kullanırsanız,Email is valid
URL
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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:
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.




