English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá como limpar e validar entrada do usuário no PHP.
Limpar e validar entrada do usuário
Para usar a extensão de filtro para validar dados, você precisa usar a função filter_var() do PHP. A sintaxe básica dessa função pode ser dada da seguinte forma:
filter_var(variável, filtro, opções)
Esta função possui três parâmetros, os dois últimos são opcionais. O primeiro parâmetro é o valor a ser filtrado, o segundo parâmetro é o ID do filtro a ser aplicado e o terceiro parâmetro é um array de opções relacionadas ao filtro. Vamos ver como ele funciona.
O exemplo a seguir limpará a string removendo todos os marcadores HTML:
<?php //comentário do usuário do exemplo $comment = "<h1>Ei! Hoje você se sentiu bem?</h1>"; //Limpar e imprimir a string de comentário $sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING); echo $sanitizedComment; ?>testar e ver‹/›
A saída do exemplo acima é mostrada a seguir:
Ei! Hoje você se sentiu bem?
O exemplo a seguir verificará se o valor é um inteiro válido.
<?php // exemplo de valor inteiro $int = 20; // verificar valor inteiro se(filter_var($int, FILTER_VALIDATE_INT)){ echo "<b>$int</b> É um inteiro válido"; } else { echo "<b>$int</b> Não é um inteiro válido"; } ?>testar e ver‹/›
No exemplo acima, se o valor da variável \$int for 0, o código de exemplo mostrará uma mensagem de inteiro inválido. Para resolver esse problema, você precisa testar explicitamente o valor 0, conforme mostrado a seguir:
<?php //exemplo de valor inteiro \$int = 0; // Validar valor inteiro de exemplo if(filter_var(\$int, FILTER_VALIDATE_INT) === 0 || filter_var(\$int, FILTER_VALIDATE_INT)){ echo "The <b>\$int</b> É um inteiro válido"; } else { echo "The <b>\$int</b> Não é um inteiro válido"; } ?>testar e ver‹/›
O exemplo a seguir verificará se o valor é um endereço IP válido.
<?php // endereço IP \$ip = "172.16.254.1"; // Exemplo de validação de endereço IP if(filter_var(\$ip, FILTER_VALIDATE_IP)){ echo "<b>\$ip</b> É um endereço IP válido"; } else { echo "<b>\$ip</b> Não é um endereço IP válido"; } ?>testar e ver‹/›
Você pode usar separadamente FILTER_FLAG_IPV4ou FILTER_FLAG_IPV6sinalizar ainda mais o IPV4ou IPV6 O endereço IP deve ser validado. Este é um exemplo:
<?php // endereço IP \$ip = "172.16.254.1"; // Exemplo de validação de endereço IP if(filter_var(\$ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { echo "<b>\$ip</b> É um IPV6endereço; } else { echo "<b>\$ip</b> Não é um IPV6endereço; } ?>testar e ver‹/›
O exemplo a seguir mostrará como limpar e validar endereços de e-mail.
<?php // endereço de e-mail \$email = "someone@@example.com"; //Remover todos os caracteres ilegais do e-mail \$sanitizedEmail = filter_var(\$email, FILTER_SANITIZE_EMAIL); //Validar endereço de e-mail if(\$email == \$sanitizedEmail && filter_var(\$email, FILTER_VALIDATE_EMAIL)){ echo "\$email é um endereço de e-mail válido"; } else { echo "\$email não é um endereço de e-mail válido"; } ?>testar e ver‹/›
Nota:O filtro FILTER_SANITIZE_EMAIL remove todos os caracteres inválidos, exceto letras, números e a string de endereço de e-mail fornecida!*+-=?^_`{|}~@.[]。
O exemplo a seguir mostrará como limpar e verificar uma URL.
<?php // exemplo de url $url = "http:://www.example.com" //remover todos os caracteres ilegais do URL $sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL); // verificar URL do site if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){ echo "$url é um site válido"; } else { echo "$url não é um site válido"; } ?>testar e ver‹/›
Atenção:O filtro FILTER_SANITIZE_URL remove todos os caracteres inválidos, exceto letras, números e caracteres específicos da string de URL fornecida$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.
Você também pode usar o flag para verificar se a URL contém a string de consulta FILTER_FLAG_QUERY_REQUIRED, como no exemplo a seguir:
<?php //url $url = "http://www.example.com?topic=filters"; //verificar URL do site para obter a string de consulta if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){ echo "<b>$url</b> Contém a string de consulta "; } else { echo "<b>$url</b> Não contém a string de consulta "; } ?>testar e ver‹/›
por favor, consulteURL HTMLtutorial para entenderURLos diferentes componentes.
A seguir, um exemplo verificará se o valor fornecido é um inteiro e se está entre 0 e10no intervalo de 0.
<?php // exemplo de valor inteiro $int = 75; //verificar valor inteiro do exemplo if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){ echo "<b>$int</b> Está entre 0 e100 no intervalo "; } else { echo "<b>$int</b> Não está entre 0 e100 no intervalo "; } ?>testar e ver‹/›