English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In this tutorial, you will learn how to clean and validate user input in PHP.
Clean and validate user input is one of the most common tasks in web applications. To simplify this task, PHP provides a native filter extension that can be used to clean or validate data, such as email addresses, URLs, IP addresses, etc.
To use the filter extension to validate data, you need to use PHP's filter_var() function. The basic syntax of the function can be given as follows:
filter_var(variable, filter, options)
This function has three parameters, of which the last two are optional. The first parameter is the value to be filtered, the second parameter is the ID of the filter to be applied, and the third parameter is an array of options related to the filter. Let's see how it works.
The following example will clean the string by removing all HTML tags from it:
<?php //Example user comment $comment = "<h1>Hey! How are you today?</h1>"; //Clean and print the comment string $sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING); echo $sanitizedComment; ?>Prueba para ver‹/›
The output of the above example is as follows:
Hey! How are you today?
The following example will verify whether the value is a valid integer.
<?php // Ejemplo de valor entero $int = 20; // Validate integer value if (filter_var($int, FILTER_VALIDATE_INT)) { echo "<b>$int</b> Es un entero válido"; } else { echo "<b>$int</b> No es un entero válido"; } ?>Prueba para ver‹/›
En el ejemplo anterior, si se establece la variable \$int en 0, el código de ejemplo mostrará un mensaje de entero no válido. Para resolver este problema, necesita probar explícitamente el valor 0, como se muestra a continuación:
<?php //Ejemplo de valor entero \$int = 0; // Validar el valor de entero de ejemplo if(filter_var(\$int, FILTER_VALIDATE_INT) === 0 || filter_var(\$int, FILTER_VALIDATE_INT)){ echo "The <b>\$int</b> Es un entero válido"; } else { echo "The <b>\$int</b> No es un entero válido"; } ?>Prueba para ver‹/›
El siguiente ejemplo verificará si el valor es una dirección IP válida.
<?php // dirección IP \$ip = ""172.16.254.1"; // Ejemplo de verificación de dirección IP if(filter_var(\$ip, FILTER_VALIDATE_IP)){ echo "<b>\$ip</b> Es una dirección IP válida"; } else { echo "<b>\$ip</b> No es una dirección IP válida"; } ?>Prueba para ver‹/›
Puede usar FILTER_FLAG_IPV por separado4o FILTER_FLAG_IPV6símbolo adicional para IPV4o IPV6 La dirección IP debe ser verificada. Este es un ejemplo:
<?php // dirección IP \$ip = ""172.16.254.1"; // Ejemplo de verificación de dirección IP if(filter_var(\$ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6})(); echo "<b>\$ip</b> Es una dirección IPV válida6dirección "{ } else { echo "<b>\$ip</b> No es una dirección IPV válida6dirección "{ } ?>Prueba para ver‹/›
El siguiente ejemplo le mostrará cómo limpiar y verificar la dirección de correo electrónico.
<?php // dirección de correo electrónico \$email = "someone@@example.com"; //Eliminar todos los caracteres ilegales de la dirección de correo electrónico \$sanitizedEmail = filter_var(\$email, FILTER_SANITIZE_EMAIL); //Verificar la dirección de correo electrónico if(\$email == \$sanitizedEmail && filter_var(\$email, FILTER_VALIDATE_EMAIL)){ echo "\$email es una dirección de correo electrónico válida"; } else { echo "\$email no es una dirección de correo electrónico válida"; } ?>Prueba para ver‹/›
Nota:El filtro FILTER_SANITIZE_EMAIL elimina todos los caracteres no válidos, excepto letras, números y la cadena de dirección de correo electrónico proporcionada!*+-=?^_`{|}~@.[]。
A continuación, se muestra un ejemplo que le mostrará cómo limpiar y verificar una URL.
<?php // ejemplo de url $url = "http:://www.example.com"; //Eliminar todos los caracteres ilegales de la dirección web $sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL); // Verificación de la dirección web del sitio if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){ echo "$url es una dirección web válida"; } else { echo "$url no es una dirección web válida"; } ?>Prueba para ver‹/›
Nota:El filtro FILTER_SANITIZE_URL elimina todos los caracteres no válidos, excepto letras, números y los caracteres de la cadena de URL proporcionada$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=。
También puede usar el flag para verificar si la URL contiene la cadena de consulta FILTER_FLAG_QUERY_REQUIRED, como se muestra en el siguiente ejemplo:
<?php //url $url = "http://www.example.com?topic=filters"; //Verificación de la dirección web del sitio para obtener la cadena de consulta if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){ echo "<b>$url</b> Contiene la cadena de consulta"; } else { echo "<b>$url</b> No contiene la cadena de consulta"; } ?>Prueba para ver‹/›
Por favor, consulteURL HTMLTutoriales, para aprenderURLsus diferentes componentes.
A continuación, se muestra un ejemplo que verifica si el valor proporcionado es un entero y si está en el rango de 0 a10en el rango de 0.
<?php // Ejemplo de valor entero $int = 75; //Verificación de valores enteros de muestra if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){ echo "<b>$int</b> Está en 0 a10en el rango de 0"; } else { echo "<b>$int</b> No está en 0 a10en el rango de 0"; } ?>Prueba para ver‹/›