Filtr PHP

Filtr PHP służy do sprawdzania poprawności danych Filtr ze źródeł niepewnych, takich jak wprowadzanych przez użytkownika.


Co to jest filtr PHP?

Filtr PHP służy do sprawdzania poprawności danych Filtr ze źródeł niepewnych.

Test, walidacji i wprowadzania danych przez użytkownika filtr lub niestandardowych danych jest ważną częścią każdej aplikacji WWW.

Filtr rozszerzenie PHP ma na celu filtrowania danych łatwiejsze i szybsze.


Dlaczego warto korzystać z filtra?

Prawie wszystkie aplikacje internetowe są zależne od wejść zewnętrznych. Dane te zwykle pochodzą od użytkowników lub innych aplikacji (takich jak usługi internetowej). Przy użyciu filtrów, można zapewnić, że aplikacje uzyskać prawidłowy typ wejścia.

Należy zawsze zewnętrzne filtrowanie danych!

filtrowanie wejście jest najważniejsze kwestie związane z bezpieczeństwem aplikacji.

Co to są dane zewnętrzne?

  • Dane wejściowe z formularza
  • ciastka
  • Dane Web services
  • Zmienne serwerowe
  • Wyniki zapytań baz danych

Funkcje i filtry

Aby filtrować zmienną, użyj jednej z następujących funkcji filtrujących:

  • filter_var () - filtrowanie pojedynczej zmiennej w określonym filtrem
  • filter_var_array () - do filtrowania wielu zmiennych tych samych lub różnych filtrów
  • filter_input - Get jedną zmienną wejściową i przefiltrowanego
  • filter_input_array - Get więcej zmiennych wejściowych i przez tego samego lub różnych filtrów, aby je filtrować

W poniższym przykładzie, używamy filter_var () Funkcja sprawdza liczbę całkowitą:

<?php
$int = 123;

if(!filter_var($int, FILTER_VALIDATE_INT))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

Powyższy kod wykorzystuje "FILTER_VALIDATE_INT" filtr do filtrowania zmienną. Ponieważ całkowita jest zgodny z prawem, więc powyższe wyjście kod będzie:

Jeśli spróbujemy użyć zmiennej nie jest liczbą całkowitą (takich jak "123abc"), to wyjście: "Integer jest nieważna".

Pełną listę funkcji i filtrów, odwiedź naszą Manualny filtr PHP odniesienia .


Walidacja i odkażania

Istnieją dwa rodzaje filtrów:

Members filtry:

  • Służy do sprawdzania poprawności danych wprowadzanych przez użytkownika
  • Ścisłe reguły formatowania (np weryfikacji URL lub adres e-mail)
  • Jeśli się powiedzie, oczekiwany typ zwracany, jeśli nie zwróci FAŁSZ

Dezynfekcja filtry:

  • Kiedyś, aby zezwolić lub zabronić określony ciąg znaków
  • Żadnych zasad formatu danych
  • Zawsze zwracają łańcuch

Opcje i flagi

Opcje i flagi są używane do dodawania dodatkowych opcji filtrowania z określonymi filtrami.

Różne filtry mają różne opcje i flagi.

W poniższym przykładzie, używamy filter_var () i "min_range" i opcję "max_range", aby sprawdzić liczbę całkowitą:

<?php
$var=300;

$int_options = array(
	"options"=>array
	(
		"min_range"=>0,
		"max_range"=>256
	)
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

Podobnie jak powyższy kod, a właściwej opcji musi być umieszczony w tablicy o nazwie "Opcje" w. Jeśli flaga nie jest wymagane w tablicy.

Ponieważ całkowita wynosi "300", to nie mieści się w podanym zakresie, wyjście kodu powyżej, będą:

不是一个合法的整数

Pełną listę funkcji i filtrów, odwiedź naszą Manualny filtr PHP odniesienia . Można zobaczyć opcje dostępne dla każdego filtra i flagi.


wejście Members

Spróbujmy Weryfikacja danych z formularza.

Musimy zrobić pierwszą rzeczą jest, aby potwierdzić, że dane wejściowe szukamy.

Następnie używamy filter_input funkcji (), aby filtrować dane wprowadzone.

W poniższym przykładzie zmienna wejściowa "e-mail" jest przekazywany do strony PHP:

<?php
if(!filter_has_var(INPUT_GET, "email"))
{
	echo("没有 email 参数");
}
else
{
	if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
	{
		echo "不是一个合法的 E-Mail";
	}
	else
	{
		echo "是一个合法的 E-Mail";
	}
}
?>

Przykłady powyższych wyników były następujące:

Przykłady przedstawione

Powyższy przykład ma zmienną wprowadzone przez (email) "get" Metoda transferu:

  1. Wykrywanie obecności "Wyślij" zmiennej wejście typu "get"
  2. Jeśli istnieje zmienna wejściowa wykryć, czy jest to prawidłowy adres e-mail

wejście Oczyszczanie

Spróbujmy wyjaśnić pochodzących z formularza URL.

Przede wszystkim, musimy potwierdzić, że dane wejściowe szukamy.

Następnie zdezynfekować funkcję wejścia filter_input danych ().

W poniższym przykładzie zmienna wejściowa "URL" jest przekazywany do strony PHP:

<?php
if(!filter_has_var(INPUT_GET, "url"))
{
	echo("没有 url 参数");
}
else
{
	$url = filter_input(INPUT_GET, 
	"url", FILTER_SANITIZE_URL);
	echo $url;
}
?>

Przykłady przedstawione

Przykłady powyższe według jednej zmiennej wejściowej (URL) "GET" metoda wysłania:

  1. Wykrywanie obecności "URL" zmienne wejściowe typu "get"
  2. Jeśli zmienna wejściowa istnieje, jego oczyszczanie (usuwanie niedozwolonych znaków) i będzie go przechowywać w zmiennej $ url

Jeśli zmienna wejściowa jest ciągiem tak: "http://www.ruaanoob.com/", zmienna $ url po oczyszczeniu jest w następujący sposób:



Wiele filtru wejściowego

Formy często składają się z wielu pól wejściowych. Aby uniknąć filter_var lub filter_input funkcję wielokrotnie wzywał, możemy użyć filter_var_array filter_input_array lub funkcję.

W tym przypadku używamy filter_input_array () funkcji filtrowania trzy zmienne GET. Odebrane zmienne GET to nazwisko, wiek i adres e-mail:

<?php
$filters = array
(
	"name" => array
	(
		"filter"=>FILTER_SANITIZE_STRING
	),
	"age" => array
	(
		"filter"=>FILTER_VALIDATE_INT,
		"options"=>array
		(
			"min_range"=>1,
			"max_range"=>120
		)
	),
	"email"=> FILTER_VALIDATE_EMAIL
);

$result = filter_input_array(INPUT_GET, $filters);

if (!$result["age"])
{
	echo("年龄必须在 1 到 120 之间。<br>");
}
elseif(!$result["email"])
{
	echo("E-Mail 不合法<br>");
}
else
{
	echo("输入正确");
}
?>

Przykłady przedstawione

Powyższy przykład ma trzy zmienne wejściowe (imię i nazwisko, wiek i e-mail) transmitowanych przez "get" metodą:

  1. Ustaw tablicę zawierającą nazwy zmiennych wejściowych wykorzystywanych do określenia zmiennych wejściowych i filtr
  2. () Funkcji, parametrów wejściowych, w tym zmiennych GET i po prostu ustawić połączenia tablicy filter_input_array
  3. Wykrywanie zmiennej $ result "wiek", a zmienna wejściowa "e-mail" jest nielegalne. (Jeśli nie są nielegalne wejście, po zastosowaniu w filter_input_array (), zmienna wejściowa jest FAŁSZ).

filter_input_array () Drugi argument funkcji może być tablicą lub pojedynczy identyfikator filtra.

Jeżeli parametr jest pojedynczy identyfikator filtru, a następnie określony filtr będzie filtrował wszystkie wartości tablicy wejście.

Jeśli ten parametr jest tablicą, tablica musi być zgodne z następującymi zasadami:

  • Musi być tablicą asocjacyjną zawierającą zmienną wejściową jest klucz array (takich jak zmiennej wejściowej "wiek")
  • Wartość tej tablicy musi mieć identyfikator filtru lub postanowienia filtr, flagi i opcje tablice

Zastosowanie filtra oddzwaniania

Stosując filtry FILTER_CALLBACK, można wywołać funkcję niestandardową, użyj go jako filtr do wykorzystania. Tak więc, mamy pełną kontrolę nad filtrowaniem danych.

Można utworzyć własną funkcję niestandardową, można też użyć istniejącej funkcji PHP.

Będziesz gotowy do korzystania z funkcji filtra, zgodnie z przepisami wyszczególnionymi opcji ustalonych wcześniej metody. W tablicy asocjacyjnej z "opcji" nazw.

W poniższym przykładzie, używamy funkcji niestandardowej wszystkich "_" przekształca się w przestrzeni:

<?php
function convertSpace($string)
{
	return str_replace("_", ".", $string);
}

$string = "www_w3big_com!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>

Wynik ten kod jest następujący:

Przykłady przedstawione

Powyższe przykłady wszystkie "_" na ".":

  1. Aby stworzyć "_" zastępuje się wyrazami "." Funkcja
  2. Funkcja połączeń filter_var (), której parametry są FILTER_CALLBACK filtr i tablicę zawierającą naszą funkcję