PHP - Filteri


Provjera valjanosti i dezinfekcija podataka pomoću filtera

Provjera korisničkog unosa jedan je od najčešćih zadataka u web aplikaciji. Da bi olakšao ovaj zadatak, PHP nudi izvorno proširenje filtra koje možete koristiti za saniranje ili provjeru podataka kao što su adrese e-pošte, URL-ovi, IP adrese itd. Da biste provjerili valjanost podataka pomoću ekstenzije filtra, morate koristiti PHP funkciju filter_var(). Osnovna sintaksa ove funkcije može se napisati kao:

filter_var(variable, filter, options)

Ova funkcija uklanja tri parametra od kojih su zadnja dva opcionalna. Prvi parametar je vrijednost koja se filtrira, drugi parametar je ID filtra koji se primjenjuje, a treći parametar je niz opcija povezanih s filtrom. Pogledajmo kako to funkcionira.



Sanitizirajte stringa

Sljedeći će primjer sanirati string uklanjanjem svih HTML oznaka iz njega:

<?php
// Uzorak korisničkog komentara
$comment = "<h1>Zdravo! Kako si danas?</h1>";
 
// Sanitizirajte i ispišite string komentara
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>

Izlaz iz gornjeg primjera izgledaće otprilike ovako:


Zdravo! Kako si danas?


Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Sanitizirajte string u PHP-u</title>
</head>
<body>

<?php
// Uzorak korisničkog komentara
$comment = "<h1>Zdravo! Kako si danas?</h1>";
 
// Sanitizirajte i ispišite string komentara
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>

</body>
</html>    


Potvrdite cjelovite vrijednosti

Sljedeći primjer će provjeriti da li je vrijednost valjani cijeli broj ili ne.

<?php
// Uzorak cjelobrojne vrijednosti
$int = 20;
 
// Potvrdite cijelu vrijednost uzorka
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b>  je važeći cijeli broj";
} else{
    echo "<b>$int</b>  je nevažeći cijeli broj";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Potvrdite cijeli broj u PHP-u</title>
</head>
<body>

<?php
// Uzorak cjelobrojne vrijednosti
$int = 20;
 
// Potvrdite cijelu vrijednost uzorka
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b> je važeći cijeli broj";
} else {
    echo "<b>$int</b> je nevažeći cijeli broj";
}
?> 

</body>
</html>    

U gornjem primjeru, ako je varijabla $int postavljena na 0, primjer koda će prikazati nevažeću cijelu poruku. Da biste riješili ovaj problem, morate izričito testirati vrijednost 0, kako u primjeru:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Potvrdite cijele brojeve uključujući nulu u PHP-u</title>
</head>
<body>

<?php
// Uzorak cjelobrojne vrijednosti
$int = 0;
 
// Potvrdite cijelu vrijednost uzorka
if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b> je važeći cijeli broj";
} else {
    echo "<b>$int</b> je nevažeći cijeli broj";
}
?>

</body>
</html>    


Potvrda IP adrese

Sljedeći primjer će provjeriti da li je vrijednost IP adresa valjana ili ne.

<?php
// Primjer IP adrese
$ip = "172.16.254.1";
 
// Potvrdite uzorak IP adrese
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "<b>$ip</b> je važeća IP adresa";
} else {
    echo "<b>$ip</b> nije važeća IP adresa";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Potvrdite IP adresu u PHP-u</title>
</head>
<body>

<?php
// Primjer IP adrese
$ip = "172.16.254.1";
 
// Potvrdite uzorak IP adrese
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "<b>$ip</b> je važeća IP adresa";
} else {
    echo "<b>$ip</b> nije važeća IP adresa";
}
?>

</body>
</html>  

Možete primijeniti provjeru valjanosti za IPV4 ili IPV6 IP adrese korištenjem FILTER_FLAG_IPV4 ili FILTER_FLAG_IPV6. Evo primjera:

<?php
// Primjer IP adrese
$ip = "172.16.254.1";
 
// Potvrdite uzorak IP adrese
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
    echo "<b>$ip</b> je važeća IPV6 adresa";
} else {
    echo "<b>$ip</b> nije važeća IPV6 adresa";
}
?>


Sanitiziranje i potvrda adrese e-pošte

Sljedeći primjer će vam pokazati kako sanirati i provjeriti valjanost adrese e-pošte.

<?php
// Uzorak adrese e-pošte
$email = "someone@@example.com";
 
// Uklonite sve ilegalne znakove iz e-pošte
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
 
// Potvrdite adresu e-pošte
if($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "$email je važeća adresa e-pošte";
} else{
    echo "$email nije važeća adresa e-pošte";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>PHP Sanitiziranje i potvrda adrese e-pošte</title>
</head>
<body>

<?php
// Uzorak adrese e-pošte
$email = "someone@@example.com";
 
// Uklonite sve ilegalne znakove iz e-pošte
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
 
// Potvrdite adresu e-pošte
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "<b>$email</b> je važeća adresa e-pošte";
} else{
    echo "<b>$email</b> nije važeća adresa e-pošte";
}
?>

</body>
</html>    


Sanitiziranje i provjera URL

Sljedeći primjer će vam pokazati kako sanirati i potvrditi url.

<?php
// Uzorak URL-a web lokacije
$url = "http:://www.example.com";
 
// Uklonite sve ilegalne znakove s url-a
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// Potvrdite url web lokacije
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url je važeći url web mjesta";
} else{
    echo "$url nije važeći url web mjesta";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>PHP Sanitiziranje i provjera URL</title>
</head>
<body>

<?php
// Uzorak URL-a web lokacije
$url = "http:://www.example.com";
 
// Uklonite sve ilegalne znakove s url-a
$url = filter_var($url, FILTER_SANITIZE_URL);
 
// Potvrdite url web lokacije
if(filter_var($url, FILTER_VALIDATE_URL)){
    echo "<b>$url</b> je važeći url web mjesta";
} else{
    echo "<b>$url</b> nije važeći url web mjesta";
}
?>

</body>
</html>  

Takođe možete provjeriti sadrži li URL niz upita ili ne, koristeći FILTER_FLAG_QUERY_REQUIRED, kao što je prikazano u sljedećem primjeru:

<?php
// Uzorak URL-a web lokacije
$url = "http://www.example.com?topic=filters";
 
// Potvrdite url web lokacije za niz upita
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> sadrži niz upita";
} else{
    echo "<b>$url</b> ne sadrži niz upita";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Potvrdite URL za niz upita u PHP-u</title>
</head>
<body>

<?php
// Uzorak URL-a web lokacije
$url = "http://www.example.com?topic=filters";
 
// Potvrdite url web lokacije za niz upita
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> sadrži niz upita";
} else{
    echo "<b>$url</b> ne sadrži niz upita";
}
?>

</body>
</html>    

Pogledajte lekciju o HTML URL-u da biste saznali više o različitim komponentama URL-a.



Provjera cjeline unutar raspona

Sljedeći primjer će provjeriti da li je navedena vrijednost cijeli broj ili ne, kao i nalazi li se u rasponu od 0 do 100 ili ne.

<?php
// Uzorak cjelobrojne vrijednosti
$int = 75;
 
// Potvrdite cijelu vrijednost uzorka
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> je u rasponu od 0 do 100";
} else{
    echo "<b>$int</b> nije u rasponu od 0 do 100";
}
?>
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Provjerite integritet unutar raspona u PHP-u</title>
</head>
<body>

<?php
// Uzorak cjelobrojne vrijednosti
$int = 75;
 
// Potvrdite cijelu vrijednost uzorka
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> je u rasponu od 0 do 100";
} else {
    echo "<b>$int</b> nije u rasponu od 0 do 100";
}
?>

</body>
</html>