Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonatã Cioni

Função para validação de campos vazios

Recommended Posts

bom galera... estou aki pra postar uma função que fiz aki no meu tempo ocioso pra resolver um problema meu, e que com ctz eh de muita gente ai tb...

 

validação de campos vazios...

 

ter que escrever não sei quatos if's pra validar cada campo... é phoda...

 

ai criei essa função que me quebrou um galhão...

 

function testaCampos(array $campos){
   foreach($campos as $legenda => $campo){
	$name = $campo['input'];
       if(empty($_POST[$name])){
           $camposVazios[] = sprintf("%s",$legenda);
       }
   }
   if(count($camposVazios) > 0){
       return 'Os seguintes campos estão vazios: '.implode(", ",$camposVazios);
   }else{
       return 1;
   }
}

 

modo de Usar:

 

<?php
if($_GET['teste'] == 'teste'){
$args = array(
		'Nome' => array('input' => 'nome'),
		'Endereco' => array('input' => 'endereco'),
		'Número' => array('input' => 'numero'),
		'E-mail' => array('input' => 'email'),
		'Login' => array('input' => 'login'),
		'Senha' => array('input' => 'senha')
	);
   echo testaCampos($args);
}
?>
<form method="post" id="formulario" name="formulario" enctype="multipart/form-data" action="?teste=teste">
   <input type="text" name="nome" id="nome" value="<?php echo $_POST['nome'];?>" />
   <input type="text" name="endereco" id="endereco" value="<?php echo $_POST['endereco'];?>" />
   <input type="text" name="numero" id="numero" value="<?php echo $_POST['endereco'];?>" />
   <input type="email" name="email" id="email" value="<?php echo $_POST['email'];?>" />
   <input type="text" name="login" id="login" value="<?php echo $_POST['login'];?>" />
   <input type="text" name="senha" id="senha" value="<?php echo $_POST['senha'];?>" />

   <input type="submit" name="mandar" id="mandar" value="Testar Campos" />
</form>

 

ah... e se alguém ai souber como forçar o PHP a reconhecer um input como tipo de dados NUMBER, me diga, pq nessa função eu tentei validar o tipo de dados tb... mais... o PHP só reconhece input como string...

 

pra isso...

 

se quiserem realizar o teste, e me ajudar a aprimorar esta função, façam o teste da seguinte forma(desta forma a função retorna o tipo de dados de cada campo...msmo usando a propriedade type="number" do HTML5 não funcionou...):

 

<?php
function testaCampos(array $campos){
   foreach($campos as $legenda => $campo){
	$name = $campo['input'];
	$type = $campo['type'];
       if(empty($_POST[$name])){
           $camposVazios[] = sprintf("%s(%s)",$legenda,gettype($_POST[$name]));
       }
       if(gettype($_POST[$name]) != $type){
           $camposErrados[] = sprintf("%s(%s)",$legenda,gettype($_POST[$name]));
       }
   }
   if(count($camposVazios) > 0){
       return 'Revise os campos: '.implode(", ",$camposVazios);
   }else if(count($camposErrados) > 0){
       return 'Caracteres Invalidos nos campos: '.implode(", ",$camposErrados);
   }else{
       return 0;
   }
}
if($_GET['teste'] == 'teste'){
$args = array(
		'Nome' => array('input' => 'nome', 'type' => string),
		'Endereco' => array('input' => 'endereco', 'type' => string),
		'Número' => array('input' => 'numero', 'type' => integer),
		'E-mail' => array('input' => 'email', 'type' => string),
		'Login' => array('input' => 'login', 'type' => string),
		'Senha' => array('input' => 'senha', 'type' => string)
		);
   echo testaCampos($args);
}
?>
<form method="post" id="formulario" name="formulario" enctype="multipart/form-data" action="?teste=teste">
   <input type="text" name="nome" id="nome" value="<?php echo $_POST['nome'];?>" />
   <input type="text" name="endereco" id="endereco" value="<?php echo $_POST['endereco'];?>" />
   <input type="number" name="numero" id="numero" value="<?php echo $_POST['endereco'];?>" />
   <input type="email" name="email" id="email" value="<?php echo $_POST['email'];?>" />
   <input type="text" name="login" id="login" value="<?php echo $_POST['login'];?>" />
   <input type="text" name="senha" id="senha" value="<?php echo $_POST['senha'];?>" />

   <input type="submit" name="mandar" id="mandar" value="Testar Campos" />
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sei, andrey, eu coloquei ai pra me ajudar durante o desenvolvimento da função, se quiserem, para utiliza-la, podem tirar e deixar somente a variavel $legenda.

 

eu que esqueci, na hora de postar, de retirar o sprintf

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, galera... demorei, mais consegui ter tempo de terminar de escrever a função... espero que seja util pra muita gente... tah tudo bem comentado e explicado, mais... qualquer duvida... é só perguntar...

 

ah... e preste atenção aos comentarios iniciais que tem instruções de utilização... tah bem explicado tb...

 

espero poder ajudar alguém...

 

/*
* Função para validação de campos v1.1
* Autor: Jonatã Luiz Cioni
* Argumento unico array $campos
* modo de usar: testaCampos(array('name_do_input_a_ser_validado' => array("Legenda que aparecera para o usuario, em caso de algum erro","tipo_de_valor_do_campo")
*
* tipos que podem ser setados:
* string = em caso do campo somente puder ser digitado LETRAS
* inteiro = em caso do campo somente puder ser digitado NUMEROS
* email = validação para campo de email
* telefone = validação para campo de teleofne no formato: (000)0000-0000
* cep = validação de CEP no formato: 00000-000
* cpf_num = validação de CPF no formato: 00000000000
* cpf_num_ponto = validação de CPF no formato 000.000.000-00
*/
function testaCampos(array $campos){
//seta as variaveis que armazenarão os erros e define elas como array
$camposVazios = array();
$camposErrados = array();
//faz uma foreach para pegar os campos e valida-los
foreach($campos as $campo => $itens){
	//verifica se o campo da que esta sendo verificado no loop esta vazio
	if(empty($_POST[$campo])){
		$camposVazios[] = strtoupper($itens[0])."<br/>";
	}
	//se não estiver vazio, verifica a compatibilidade dos dados digitados pelo usuario
	if(!empty($_POST[$campo])){
		//se tiver setado o tipo como string, a função valida-o como string
		if($itens[1] == 'string' && !preg_match("/^[a-zA-Z]+$/",$_POST[$campo])){
			$camposErrados[] = "No campo ".strtoupper($itens[0])." você só pode digitar letras<br/>";
		}
		//se tiver setado o tipo como inteiro, a função valida-o como inteiro
		if($itens[1] == 'inteiro' && !preg_match("/^[0-9]+$/",$_POST[$campo])){
			$camposErrados[] = "No campo ".strtoupper($itens[0])." você só pode digitar números<br/>";
		}
		//se tiver setado o tipo como email, a função valida-o como email
		if($itens[1] == 'email' && !preg_match("/^[a-z0-9_\.\-]+@[a-z0-9_\.\-]*[a-z0-9_\-]+\.[a-z]{2,4}$/i",$_POST[$campo])){
			$camposErrados[] = "Digite um E-mail válido no campo ".strtoupper($itens[0])."<br/>";
		}
		//se tiver setado o tipo como telefone, a função valida-o como telefone
		if($itens[1] == 'telefone' && !preg_match("/^\(\d{3}\)[\s-]?\d{4}-\d{4}$/",$_POST[$campo])){
			$camposErrados[] = "Digite o formato correto no campo ".strtoupper($itens[0])." => Correto: (000)0000-0000<br/>";
		}
		//se tiver setado o tipo como cep, a função valida-o como cep
		if($itens[1] == 'cep' && !preg_match("/^[0-9]{5}([-][0-9]{3})$/",$_POST[$campo])){
			$camposErrados[] = "Digite o formato correto no campo ".strtoupper($itens[0])." => Correto: 00000-000<br/>";
		}
		//se tiver setado o tipo como cpf_num, a função valida-o como cpf_num
		if($itens[1] == 'cpf_num' && !preg_match("/^[0-9]{11}$/",$_POST[$campo])){
			$camposErrados[] = "Digite o formato correto no campo ".strtoupper($itens[0])." => Correto: 00000000000<br/>";
		}
		//se tiver setado o tipo como cpf_num_ponto, a função valida-o como cpf_num_ponto
		if($itens[1] == 'cpf_num_ponto' && !preg_match("/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2,2}$/",$_POST[$campo])){
			$camposErrados[] = "Digite o formato correto no campo ".strtoupper($itens[0])." => Correto: 000.000.000-00<br/>";
		}
	}
}
//se tiver algum tipo de rro ou campo vazio, entra no if...
if(count($camposVazios) > 0 || count($camposErrados) > 0){
	//se tiver algum campo vazio... mostra-os
	if(count($camposVazios) > 0){
		$retorno.= "Os seguintes campos Obrigatórios estão vazios:<br/>".implode("",$camposVazios);
	}
	//se tiver campos vazios e campos com erro... pula uma linha para não ficar tudo muito junto
	if(count($camposVazios) > 0 && count($camposErrados) > 0){
		$retorno.= '<br/>';
	}
	//se tiver campos com erros... mostra-os
	if(count($camposErrados) > 0){
		$retorno.= "Ocorreram os seguintes erros:<br/>".implode("",$camposErrados);
	}
//...se não tiver nenhum erro e nenhum campo vazio... entra no else...
}else{
	$retorno = 0;
}
return $retorno;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.