PHP filtry
Ověřování dat = Zjistěte, zda jsou data ve správné formě.
Sanitizace dat = Odstraňte z dat všechny nepovolené znaky.
Rozšíření filtru PHP
PHP filtry se používají k ověření a dezinfekci externího vstupu.
Rozšíření PHP filtru má mnoho funkcí potřebných pro kontrolu uživatelského vstupu a je navrženo tak, aby usnadnilo a zrychlilo ověřování dat.
Funkci filter_list()
lze použít k zobrazení seznamu toho, co rozšíření PHP filtru nabízí:
Příklad
<table>
<tr>
<td>Filter Name</td>
<td>Filter ID</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Proč používat filtry?
Mnoho webových aplikací přijímá externí vstup. Externí vstup/data mohou být:
- Uživatelský vstup z formuláře
- Soubory cookie
- Data webových služeb
- Serverové proměnné
- Výsledky dotazu databáze
Externí data byste měli vždy ověřit!
Neplatná odeslaná data mohou vést k bezpečnostním problémům a narušit vaši webovou stránku!
Pomocí PHP filtrů si můžete být jisti, že vaše aplikace dostane správný vstup!
Funkce PHP filter_var ().
Funkce filter_var()
ověřuje a dezinfikuje data.
Funkce filter_var()
filtruje jednu proměnnou pomocí zadaného filtru. Vyžaduje to dva údaje:
- Proměnná, kterou chcete zkontrolovat
- Typ šeku, který se má použít
Dezinfikujte provázek
Následující příklad používá filter_var()
funkci k odstranění všech značek HTML z řetězce:
Příklad
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Ověřte celé číslo
Následující příklad používá filter_var()
funkci ke kontrole, zda proměnná $int je celé číslo. Pokud je $int celé číslo, výstup kódu níže bude: "Integer je platné". Pokud $int není celé číslo, výstup bude: "Integer is not valid":
Příklad
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Tip: filter_var() a Problém s 0
Pokud byl ve výše uvedeném příkladu $int nastaven na 0, výše uvedená funkce vrátí "Integer is not valid". Chcete-li tento problém vyřešit, použijte níže uvedený kód:
Příklad
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Ověřte IP adresu
Následující příklad používá filter_var()
funkci ke kontrole, zda je proměnná $ip platnou IP adresou:
Příklad
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Vyčistěte a ověřte e-mailovou adresu
Následující příklad používá filter_var()
funkci k odstranění všech nepovolených znaků z proměnné $email a poté ke kontrole, zda se jedná o platnou e-mailovou adresu:
Příklad
<?php
$email = "[email protected]";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Vyčistěte a ověřte adresu URL
Následující příklad používá filter_var()
funkci k nejprve odstranění všech nepovolených znaků z adresy URL a poté ke kontrole, zda je $url platnou adresou URL:
Příklad
<?php
$url = "https://www.w3schools.com";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
Kompletní přehled PHP filtrů
Kompletní referenci o všech funkcích filtru naleznete v naší úplné Referenční příručce filtrů PHP. Zkontrolujte jednotlivé filtry, abyste viděli, jaké možnosti a příznaky jsou k dispozici.
Odkaz obsahuje stručný popis a příklady použití pro každou funkci!