Você deve estar usando funções de filtragem PHP, parte 2
No post anterior, falei sobre as razões pelas quais usar funções de filtragem PHP é mais útil do que não.
Resumindo, isso ajuda a fornecer um nível de validação embutido na linguagem para que não tenhamos que reescrever algo. Naturalmente, há ressalvas.
Por exemplo, se você está tendo que validar um valor que é de caracteres não latinos, então você terá que ir sozinho e implementar a validação com talvez uma expressão regular.
Mas se você estiver usando endereços de e-mail, URLs, números, endereços IP e tantas outras coisas, estará em uma boa posição para usar algo que já existe.
De qualquer forma, todos os itens acima ainda são sobre a filtragem de variáveis. Mas e as entradas? Ou seja, aqueles que vêm de $_POST
ou $_GET
. É possível usar uma estratégia semelhante com uma função diferente e um conjunto de filtros diferente.
Mas se você entender o básico apresentado no último post, então este post não será muito diferente.
Funções de Filtragem PHP, Parte 2: Entradas
A filtragem de entradas é feita pela filter_input
função. A definição para esta função específica é:
Obtém uma variável externa específica por nome e, opcionalmente, a filtra
E, como mencionado da última vez, isso soa um pouco estranho até você entender o que são os filtros. Felizmente, abordamos isso no post anterior. E embora este post se concentre especificamente POST
(e muito brevemente GET
).
Mas existem outros filtros. E estes incluem:
INPUT_COOKIE
INPUT_SERVER
INPUT_ENV
De qualquer forma, como as duas operações mais comuns que costumo ver no WordPress incluem POST
e GET
, parece importante incluir essas duas aqui.
Usar essas funções é trivialmente fácil. Suponha que você tenha um valor vindo de algo que o usuário forneceu em um formulário e ele está enviando para o servidor usando uma POST
solicitação com uma chave como firstname
.
O código para verificar isso pode ser algo assim:
filter_input(INPUT_POST, 'firstname');
O que é fácil de entender porque simplesmente pega a chave, filtra e retorna um valor. E como ele retorna um valor, podemos configurar uma cláusula de guarda antes de avançar com mais trabalho:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
Se tudo der certo, podemos seguir em frente fazendo o que for necessário com as informações do usuário. Talvez precisemos associá-lo ao post atual por qualquer motivo:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
4
5$firstname = filter_input(INPUT_POST, 'firstname');
6update_post_meta(get_the_ID(), 'acme-firstname', $firstname);
7
8// Other code you may use...
Além disso, você pode proteger ainda mais as informações com o uso dos diversos filtros existentes. Estes são passados como um terceiro parâmetro para a filter_input
função.
E sobre o quê GET
?
O bom dessa função é que, de um modo geral, as mesmas regras são válidas como POST
except em vez de usar INPUT_POST
, você usará INPUT_GET
.
E então você pode trabalhar com seu código da maneira que melhor se adequar às necessidades do seu projeto.
Segurança, Nonces, etc.
Lembre-se, isso não é algo para ser usado no lugar da segurança. Isso é puramente para fins de segurança de dados antes de fazer qualquer coisa com eles.
Não substitua a verificação de valores nonce apenas porque você está verificando os dados de forma diferente.
Variáveis e Entradas
Lembre-se, embora essas funções sejam variáveis muito semelhantes e as entradas sejam diferentes. Em outras palavras, não tente usar filter_var
quando estiver trabalhando com entradas provenientes do usuário ou do navegador. Use-o sempre que estiver trabalhando com variáveis. E, da mesma forma, use ht e