Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>Carregando comentários...