PHP Filtri
Vadnica logo
vadnica logo
x
HTML CSS JavaScript jQuery SQL PHP Laravel
HTML CSS JavaScript jQuery MySQL PHP Include Echo, Print Podatkovni tipi (Data Types) Spremenljivke (Variables) Nizi (String) Pretvorba podatkov (Casting) Izjeme Pogojni stavki Zanke Datum in Čas Koledar Funkcije Matrika (Array) MySQLi Obrazci (Forms) Filtri Ključne besede (Keyword) OOP (Razredi in Objekti) Razno Superglobalne spremenljivke Omrežne funkcije Laravel

PHP Filtri

PHP filtri se uporabljajo za preverjanje in filtriranje podatkov, ki prihajajo iz nevarnih virov, kot je uporabniški vnos. Za uporabo teh filtrov ni potrebno dodatno nameščanje, ker so že privzeto omogočeni.

PHP Filtri

Na obnašanje teh filtrov vplivajo nastavitve v php.ini datoteki:

Ime Opis Privzeto Spremenljivko
filter.default S tem filtrom filtriramo vse podatke $_GET, $_POST, $_COOKIE, $REQUEST in $_SERVER. Sprejme ime filtra, ki ga želimo privzeto uporabiti. Oglejmo si seznam filtrov za seznam imen filtrov. "unsafe_raw" PHP_INI_PERDIR
filter.default_flags Privzete zastavice (flags), ki se uporabijo, ko je nastavljen privzeti filter. Privzeto je nastavljeno na FILTER_FLAG_NO_ENCODE_QUOTES zaradi združljivosti za nazaj. NULL PHP_INI_PERDIR
filter_has_var() Preveri, ali obstaja spremenljivka določene vrste vnosa. Glej primer
filter_id() Vrne ID filtra podanega imena filtra. Glej primer
filter_input() Pridobi zunanjo spremenljivko (npr. iz obrazca vnosa) in jo po želji filtrira. Glej primer
filter_input_array() Pridobi zunanje spremenljivke (iz vnosa obrazca) in jih po želji filtrira. Glej primer
filter_list() Vrne seznam vseh podprtih imen filtrov. Glej primer
filter_var() Filtrira spremenljivko z določenim filtrom. Glej primer
filter_var_array() Pridobi več spremenljivk in jih filtrira. Glej primer

Naprednejša uporaba filtrov

Pri uporabi naprednih filtrov lahko uporabimo različne možnosti, da prilagodimo filtre za validiranje in sanacije vhodnih podatkov. Tukaj si bomo ogledali nekaj naprednejših načinov uporabe filtrov.

Uporaba naprednih možnosti z filter_var()

Parameter $moznosti nam omogoča, da določimo dodatne možnosti za filtriranje. Poglejmo primer validacije in filtriranja IP naslova z določitvijo možnosti.

Uporaba naprednih možnosti z filter_var()
Uporaba naprednih možnosti z filter_var()
PRIMER
<?php
$ip = "127.0.0.1";

// Uporaba FILTER_VALIDATE_IP z naprednimi možnostmi
$moznosti = [
    'flags' => FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE
];

$filtriran_ip = filter_var($ip, FILTER_VALIDATE_IP, $moznosti);

if ($filtriran_ip !== false) {
    echo "IP naslov je veljaven: " . $filtriran_ip;
} else {
    echo "IP naslov ni veljaven.";
}
            
REZULTAT
IP naslov ni veljaven.
            

Uporaba naprednih možnosti z filter_var_array()

Z filter_var_array() lahko filtriramo več vhodnih podatkov hkrati in za vsako spremenljivko določimo specifična pravila in možnosti.

Uporaba naprednih možnosti z filter_var_array()
Uporaba naprednih možnosti z filter_var_array()
PRIMER
<?php
// Vhodno polje, ki simulira npr. $_POST podatke
$data = [
    'username' => 'grdiRaček',
    'age' => '51',
    'email' => 'primer@demo.si'
];

// Definicija filtrov za posamezne spremenljivke
$filters = [
    'username' => [
        'filter' => FILTER_CALLBACK,
        'options' => function ($value) {
            return preg_match('/^[a-zA-Z0-9]{3,20}$/', $value) ? $value : false;
        }
    ],
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => [
            'min_range' => 1,
            'max_range' => 120
        ]
    ],
    'email' => FILTER_VALIDATE_EMAIL
];

// Uporaba filter_var_array za filtriranje vhodnih podatkov
$filtered_data = filter_var_array($data, $filters);

if ($filtered_data) {
    if ($filtered_data['username'] === false) {
        echo "Uporabniško ime ni veljavno.<br>";
    } else {
        echo "Uporabniško ime je veljavno: " . htmlspecialchars($filtered_data['username']) . "<br>";
    }

    if ($filtered_data['age'] === false) {
        echo "Starost ni veljavna ali ni v pravilnem obsegu.<br>";
    } else {
        echo "Starost je veljavna: " . htmlspecialchars($filtered_data['age']) . "<br>";
    }

    if ($filtered_data['email'] === false) {
        echo "Email naslov ni veljaven.<br>";
    } else {
        echo "Email naslov je veljaven: " . htmlspecialchars($filtered_data['email']) . "<br>";
    }
} else {
    echo "Napaka pri filtriranju vhodnih podatkov.";
}
            
REZULTAT
Uporabniško ime je veljavno: grdiRacek
Starost je veljavna: 51
Email naslov je veljaven: primer@demo.si
            

Kako deluje:

  1. Z možnostmi in zastavicami (flags) definiramo specifična pravila za vsak filter.
  2. Za bolj zahtevne validacije lahko uporabimo FILTER_CALLBACK in v možnostih podamo poljubno funkcijo.
  3. Možnost definiranja specifičnih pravil in filtrov za vsako spremenljivko omogoča visoko stopnjo prilagodljivosti.

Napredne možnosti filtrov

  1. FILTER_VALIDATE_IP z različnimi zastavicami:
    1. FILTER_FLAG_IPV4
    2. FILTER_FLAG_IPV6
    3. FILTER_FLAG_NO_PRIV_RANGE
    4. FILTER_FLAG_NO_RES_RANGE
  2. FILTER_VALIDATE_URL z zastavicami:
    1. FILTER_FLAG_PATH_REQUIRED
    2. FILTER_FLAG_QUERY_REQUIRED

S temi metodami lahko zelo natančno kontroliramo validacijo in sanacijo vhodnih podatkov, kar izboljša varnost naše aplikacije.

Hvala za obisk! Dodajam politiko zasebnosti.

© 2024 Vse pravice pridržane.

Donirajte preko PayPal ADMIN