Como validar formulário em PHP?

Cedo ou tarde todo programador vai ter que validar formulário em PHP. Existem algumas práticas que tornam essa tarefa mais simples.

O ideal é sempre você utilizar algum framework que possa prover segurança na validação dos dados. Caso você esteja programando um script diretamente, segue 3 dicas de como validar com eficiência um formulário em PHP.

Validando o POST

Uma prática muito comum é acessar diretamente um índice de $_POST sem validar sua existência. Em alguns ambiente, isso pode funcionar sem problemas. Mas, caso não esteja configurado corretamente, pode apresentar erros que deixem o sistema inoperante.

<?php

// prática não recomendada;
$nome = $_POST['nome'];

Validar formulário com função isset()

A função isset do PHP serve exatamente para validar se existe o índice no $_POST. Veja um exemplo abaixo de como utilizar a função.

<?php

if(isset($_POST['nome']))
   $nome = $_POST['nome'];

Dessa maneira, primeiro você irá verificar a existência do índice no array $_POST, para depois associar na variável.

filter_var

Com a função filter_var do PHP é possível fazer uma validação de dados. Esse tipo de validação é importante, caso queira que o $_POST receba um e-mail, por exemplo. Veja o exemplo abaixo:

<?php

if(filter_var('[email protected]', FILTER_VALIDATE_EMAIL))
 echo "É um e-mail válido!";
else
 echo "Ops! Não é um e-mail válido.";

Tem alguma outra dúvida? Deixe um comentário abaixo!

ignore_user_abort – Script PHP assíncrono

Hoje vamos falar de script PHP assíncrono usando ignore_user_abort!

Algumas vezes precisamos fazer alguns scripts que irão rodar em background. Um exemplo seria, o envio em massa de emails.

Porém, esse processo pode ser um pouco lento, e o ideal é não deixar o usuário esperando o retorno do sistema, após concluir o envio de 1.000, 2.000 ou seja lá o tamanho da base de e-mails.

Diferença entre Script e Compilado

O PHP é uma linguagem desenvolvida em scripts. Ou seja, a cada requisição, todas as instruções são lidas e executadas, em forma de script.

No caso de um site ou sistema web, a cada transação, mudança de página ou requisição, o PHP encerra a execução do script, mesmo sendo um ajax.

Usando a função ignore_user_abort

Para contornar esse detalhe do PHP, existe a função nativa do PHP ignore_user_abort.

Ela poderá receber um parâmetro booleano, não obrigatório, caso o parâmetro não for informado, retornará a situação atual da função.

Para o funcionamento da função, ela deve ser chamada no início do script PHP. A função torna a execução do script assíncrono, ou seja, ele irá executar as informações enquanto o servidor php estiver online.

ignore_user_abort(1); // Execute o script em background, de forma continua
set_time_limit(0); // executando de timeout o script, use com cuidado...
$interval = 60 * 15; //O intervalo que o script terá para executar, a cada 15 minutos
do{
// add the script that has to be ran every 15 minutes here
// ...
sleep($interval); // wait 15 minutes
}while(true);

Referência: php.net

short_open_tag no PHP, evitando erros

Olá Pessoas!

Como meu primeiro post aqui, quero falar sobre Short Tags!

Como todos devem saber as Short Tags estão em DEPRECATED no PHP 5.3.x.

A diretiva (short_open_tag) estão lá no php.ini, mas setadas como Off!

Caso precise trabalhar num projeto que utilize-as, há duas opções:

  1. Ativar a diretiva (short_open_tag=On), e reiniciar o apache. (Não recomendado, pois alguns servidores compartilhados: a) Já estão atualizando a versão do PHP; b) Nem todos os servidores tem a possibilidade de colocar um php.ini na raiz do site e pronto, tá rodando; c) Mesmo pedindo para ativarem, podem negar, pois como se trata de uma hospedagem compartilhada, não se sabe qual o impacto nos outros sites).
  2. Varrer arquivos do projeto pesquisando pelas short tags (<?) e substituindo pela tag padrão (<?php).

Para essa segunda opção deve ser feita a pesquisa utilizando a seguinte expressão regular <\?(?!php)(\s|\n|\t) e substituir por <?php.

Mas tome cuidado, tem também a shot tag para echo (<?=), cujo recomendo rodar antes, substituindo pelo padrão (<?php echo).

Outra dica que dou é não automatize a substituição, rode a pesquisa sem substituir e veja se realmente é necessário fazer a substituição!

number_format formatando número com PHP

Para formatar números decimais no PHP é muito fácil.

Podemos usar a função number_format, que irá funcionar perfeitamente para o caso.

Digamos que seja preciso formatar o número 1500 no formato 1.500,00. Este formato pode ser usado para valor monetário, por exemplo.
Para formatar o número com PHP, use o exemplo abaixo:

$numero = 1500;
echo number_format( $numero, 2, ',', '.' ); // saída 1.500,00

De acordo com o exemplo acima, definimos que o valor decimal será de duas casas decimais. Isso foi definido no segundo parâmetro da função.
No terceiro parâmetro é definido o símbolo que será usado para separar a casa decimal e no quarto parâmetro é definido o símbolo de separação do milhar.

Definição: number_format( float $numero, int $decimal, string $decimal_simbolo, string $milhar_simbolo );

UNSIGNED e ZEROFILL: Para que servem as colunas no MySQL?

Está procurando uma ajuda para entender para que servem as colunas UNSIGNED e ZEROFILL no MySQL?

Apesar do nome Dicas de PHP, o blog também tem dicas de MySQL. Abaixo uma breve explicação das colunas UNSIGNED e ZEROFILL.

UNSIGNED no MySQL

Para todos os campos do tipo “inteiros” no MySQL, podemos definir o atributo opcional UNSIGNED. Esse atributo é usado para permitir somente valores positivos em uma coluna do banco, o que acaba gerando uma faixa numérica maior de números positivos.

Por exemplo, uma coluna do tipo INT:

  • Faixa normal: de -2147483648 a 2147483647
  • Faixa UNSIGNED: de 0 a 4294967295

Tipo TINYINT:

  • Faixa: de -128 até 127
  • Faixa UNSIGNED: 0 a 255

ZEROFILL no MySQL

Já o atributo opcional ZEROFILL, preenche espaços vazios da coluna com o número zero. Por exemplo, uma coluna que é declarada como INT(4) com a opção ZeroFill, o valor “5” é recuperado como “0005”.

Se você especificar para uma coluna numérica ZEROFILL, automaticamente o MySQL adiciona o atributo UNSIGNED a coluna.

1 Star2 Stars3 Stars4 Stars5 Stars (44 votos, média: 4,14 de 5)
Loading...