Ir para conteúdo

Arquivado

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

Luis_Carlos

Validação de formulario

Recommended Posts

Fiz um formulário que envia os dados do usuário para um TXT.

A data de nascimento é convertida em signo e idade no TXT.

 

Mas estou com um problema, preciso que os dados sejam validados antes de serem gravados no TXT,ou seja,se o usuário não preenche algum campo,ou preenche de forma incorreta o processo deve parar,e mostrar uma mensagem para o usurário voltar e corrigir os campos incorretos ou que estão faltando.

È uma duvida bem boba,mas ja tentei varios codigos de validação e não obtive exito.

 

Segue Codigo PHP

<?php
	//PEGA OS DADOS ENVIADOS PELO FORMULÁRIO
	

	$nome	=	$_POST["nome"];
	$dia	=	$_POST["dia"];
	$mes	=	$_POST["mes"];
	$ano	=	$_POST["ano"];
	$rg	=	$_POST["rg"];
	$cpf	=	$_POST["cpf"];
	$fixo	=	$_POST["fixo"];
	$celular	=	$_POST["celular"];
	$atividade	=	$_POST["atividade"];
	$rua	=	$_POST["rua"];
	$bairro	=	$_POST["bairro"];
	$estado	=	$_POST["estado"];
	$cep	=	$_POST["cep"];
	$email	=	$_POST["email"];
	function validaCPF($cpf)
	//FUNÇÃO VALIDA CPF
{	// Verifiva se o número digitado contém todos os digitos
    $cpf = str_pad(str_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
	
	// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
    if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
	{
	return false;
    }
	else
	{   // Calcula os números para verificar se o CPF é verdadeiro
        for ($t = 9; $t < 11; $t++) {
            for ($d = 0, $c = 0; $c < $t; $c++) {
                $d += $cpf{$c} * (($t + 1) - $c);
            }
 
            $d = ((10 * $d) % 11) % 10;
 
            if ($cpf{$c} != $d) {
                return false;
            }
        }
 
        return true;
    }
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btnOK']))
	{
	$cpf_enviado = validaCPF($_POST['cpf']);
	// Verifica a resposta da função e exibe na tela
	if($cpf_enviado == true);
		
	elseif($cpf_enviado == false)
		echo "<br>CPF INVÁLIDO! Retorne e digite um CPF válido!";
	}




	function signo($dia, $mes) {
    if ($mes == "3"  AND $dia >= "20") { $signo = "Áries";       }   //Áries       20/03 a 20/04
  elseif ($mes == "4"  AND $dia <= "20") { $signo = "Áries";       }   //Áries       20/03 a 20/04
  elseif ($mes == "4"  AND $dia >= "21") { $signo = "Touro";       }   //Touro       21/04 a 20/05
  elseif ($mes == "5"  AND $dia <= "20") { $signo = "Touro";       }   //Touro       21/04 a 20/05
  elseif ($mes == "5"  AND $dia >= "21") { $signo = "Gêmeos";      }   //Gêmeos      21/05 a 20/06
  elseif ($mes == "6"  AND $dia <= "20") { $signo = "Gêmeos";      }   //Gêmeos      21/05 a 20/06
  elseif ($mes == "6"  AND $dia >= "21") { $signo = "Câncer";      }   //Câncer      21/06 a 21/07
  elseif ($mes == "7"  AND $dia <= "21") { $signo = "Câncer";      }   //Câncer      21/06 a 21/07
  elseif ($mes == "7"  AND $dia >= "22") { $signo = "Leão";        }   //Leão        22/07 a 22/08
  elseif ($mes == "8"  AND $dia <= "22") { $signo = "Leão";        }   //Leão        22/07 a 22/08
  elseif ($mes == "8"  AND $dia >= "23") { $signo = "Virgem";      }   //Virgem      23/08 a 22/09
  elseif ($mes == "9"  AND $dia <= "22") { $signo = "Virgem";      }   //Virgem      23/08 a 22/09
  elseif ($mes == "9"  AND $dia >= "23") { $signo = "Libra";       }   //Libra       23/09 a 22/10
  elseif ($mes == "10" AND $dia <= "22") { $signo = "Libra";       }   //Libra       23/09 a 22/10
  elseif ($mes == "10" AND $dia >= "23") { $signo = "Escorpião";   }   //Escorpião   23/10 a 21/11
  elseif ($mes == "11" AND $dia <= "21") { $signo = "Escorpião";   }   //Escorpião   23/10 a 21/11
  elseif ($mes == "11" AND $dia >= "22") { $signo = "Sagitário";   }   //Sagitário   22/11 a 21/12
  elseif ($mes == "12" AND $dia <= "21") { $signo = "Sagitário";   }   //Sagitário   22/11 a 21/12
  elseif ($mes == "12" AND $dia >= "22") { $signo = "Capricórnio"; }   //Capricórnio 22/12 a 21/01
  elseif ($mes == "1"  AND $dia <= "21") { $signo = "Capricórnio"; }   //Capricórnio 22/12 a 21/01
  elseif ($mes == "1"  AND $dia >= "21") { $signo = "Aquário";     }   //Aquário     21/01 a 18/02
  elseif ($mes == "2"  AND $dia <= "18") { $signo = "Aquário";     }   //Aquário     21/01 a 18/02    
  elseif ($mes == "2"  AND $dia >= "19") { $signo = "Peixes";      }   //Peixes      19/02 a 19/03
  elseif ($mes == "3"  AND $dia <= "19") { $signo = "Peixes";      }   //Peixes      19/02 a 19/03
  else { $signo = "Não Reconhecido"; }
return $signo;
} 

$dia = $_POST["dia"];
$mês = $_POST["mes"];

$signo = signo($dia,$mês);

$dia = date ('d');
$mes = date ('m');
$ano = date ('Y');
//Data do aniversário
$dianasc = $_POST["dia"];
$mesnasc = $_POST["mes"];
$anonasc = $_POST["ano"];
//Calculando sua idade
$idade = $ano - $anonasc;
if ($mes < $mesnasc){
$idade;
echo "$idade";
}
elseif ($mes == $mesnasc and $dia <= $dianasc) {
$idade;

}





	//PREPARA O CONTEÚDO A SER GRAVADO
	$conteudo	=	"$dia,$mes,$ano,$idade,$rg,$cpf,$fixo,$celular,$atividade,$rua,$bairro,$estado,$cep,$signo,$email\r\n";
	
	//ARQUIVO TXT
	$arquivo	= "usuarios.txt";
	
	//TENTA ABRIR O ARQUIVO TXT
	if (!$abrir = fopen($arquivo, "a")) {
         echo  "Erro abrindo arquivo ($arquivo)";
         exit;
    }
	
	//ESCREVE NO ARQUIVO TXT
	if (!fwrite($abrir, $conteudo)) {
        print "Erro escrevendo no arquivo ($arquivo)";
        exit;
    }
	
	echo "<br>CADASTRO REALIZADO COM SUCESSO";
	
	
	//FECHA O ARQUIVO 
	fclose($abrir);

?>

Codigo HTML (form)

<html>
 <head>
 <title> Ficha de cadastro </title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 <head>
 
 </head>

 <body>
  <h1> Faça sua inscrição agora</h1> 
  
  <form action="avaliaficha.php" method="post">

<!-- DADOS PESSOAIS-->
<fieldset>
 <legend>Dados Pessoais</legend>
 <table cellspacing="10">
  </tr>
  <tr>
   <td>
    <label for="cidade">Nome: </label>
   </td>
   <td align="left">
    <input type="text" name="nome">
   </td>
  </tr>
  <tr>
   <td>
    <label>Nascimento DD/MM/AAAA:</label>
   </td>
   <td align="left">
    <input type="text" name="dia" size="2" maxlength="2"> - <input type="text" name="mes" size="2" maxlength="2">- <input type="text" name="ano" size="4" maxlength="4">
   </td>
  </tr>
  <tr>
   <td>
    <label for="rg">RG: </label>
   </td>
   <td align="left">
    <input type="text" name="rg" size="10" maxlength="13"> 
   </td>
  </tr>
  </tr>
  <tr>
   <td>
    <label for="rg">CPF: </label>
   </td>
   <td align="left">
    <input type="text" name="cpf" size="11" maxlength="13"> 
   </td>
  </tr>
  <tr>
   <td>
    <label for="rg">Telefone Fixo: </label>
   </td>
   <td align="left">
    <input type="text" name="fixo" size="11" maxlength="11"> 
   </td>
  </tr>
  <tr>
   <td>
    <label for="rg">Telefone celular: </label>
   </td>
   <td align="left">
    <input type="text" name="celular" size="11" maxlength="11"> 
   </td>
  </tr>
  <tr>
   <td>
    <label for="email">Pratica atividade fisica?Qual?: </label>
   </td>
   <td align="left">
    <input type="text" name="atividade">
   </td>
  </tr>
  <tr>
 </table>
</fieldset>

<br />
<!-- ENDEREÇO -->
<fieldset>
 <legend>Dados de Endereço</legend>
 <table cellspacing="10">

  </tr>
  <tr>
   <td>
    <label for="rg">Rua/Numero: </label>
   </td>
   <td align="left">
    <input type="text" name="rua" size="100" maxlength="100"> 
   </td>
  </tr>
  <tr>
   <td>
    <label for="bairro">Bairro: </label>
   </td>
   <td align="left">
    <input type="text" name="bairro">
   </td>
  </tr>
  <tr>
   <td>
    <label for="estado">Estado:</label>
   </td>
   <td align="left">
    <select name="estado"> 
    <option value="ac">Acre</option> 
    <option value="al">Alagoas</option> 
    <option value="am">Amazonas</option> 
    <option value="ap">Amapá</option> 
    <option value="ba">Bahia</option> 
    <option value="ce">Ceará</option> 
    <option value="df">Distrito Federal</option> 
    <option value="es">Espírito Santo</option> 
    <option value="go">Goiás</option> 
    <option value="ma">Maranhão</option> 
    <option value="mt">Mato Grosso</option> 
    <option value="ms">Mato Grosso do Sul</option> 
    <option value="mg">Minas Gerais</option> 
    <option value="pa">Pará</option> 
    <option value="pb">Paraíba</option> 
    <option value="pr">Paraná</option> 
    <option value="pe">Pernambuco</option> 
    <option value="pi">Piauí</option> 
    <option value="rj">Rio de Janeiro</option> 
    <option value="rn">Rio Grande do Norte</option> 
    <option value="ro">Rondônia</option> 
    <option value="rs">Rio Grande do Sul</option> 
    <option value="rr">Roraima</option> 
    <option value="sc">Santa Catarina</option> 
    <option value="se">Sergipe</option> 
    <option value="sp">São Paulo</option> 
    <option value="to">Tocantins</option> 
   </select>
   </td>
  </tr>
   </tr>
   <tr>
   <td>
    <label for="cep">Cidade ou Cep: </label>
   </td>
   <td align="left">
    <input type="text" name="cep">
   </td>
  </tr>
  <tr>
   <td>
    <label for="email">E-mail: </label>
   </td>
   <td align="left">
    <input type="text" name="email">
   </td>
  </tr>
 </table>
</fieldset>
<br />
<input type='submit' name='btnOK' value='Concluir'>


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi sua dúvida.

 

Cada tipo de dado possui uma regra de validação. Por exemplo, nome não pode ser vazio e deve conter mais de uma palavra (nome e sobrenome). CPF segue um determinado algoritmo. E assim vai.

 

Explique exatamente qual é a sua dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero que os campos fiquem em branco basicamente, o CPF que é o mais importante do form já está com uma funcao para verificar a validade.Igualmente, mesmo se ele digitado de forma inválida, o registro vai para o txt, queria que o cadastro fosse recusado se algum campo ficar em branco ou o CPF for inválido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode também, para validar o CPF e obrigar o usuário a digitar os valores corretos, utilizar o maskedinput do jquery, desta forma não há como errar o formato do CPF, entre tanto, isso não significa que ele seja válido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei a seguinte função,conforme o Beraldo falou,


	// Recebe um campo de um formulário

$nome = $_POST['nome'];


// Verifica se o usuário digitou o seu nome
if (empty($nome)) {
	echo "Por favor, preencha o seu nome.";
} 

Mas.. o formulario é enviado de qualquer forma para o TXT,eu queria que a mensagem abaixo "CADASTRO REALIZADO COM SUCESSO" não fosse mostrada,pois faltam campos para ser preenchidos,deveria mostrar "CADASTRO INVALIDO,POR FAVOR RETORNE E VERIFIQUE OS SEGUINTES CAMPOS" e mostar os campos invalidos,como na mensagem abaixo e principalmente,não gravar dados vazios no TXT

 

Essa é a função que grava os dados no TXT e mostra a mensagem de cadastro realizado com sucesso.

//ESCREVE NO ARQUIVO TXT
	if (!fwrite($abrir, $conteudo)) {
        print "Erro escrevendo no arquivo ($arquivo)";
        exit;
    }
	
	echo "<br>CADASTRO REALIZADO COM SUCESSO";
	
	
	//FECHA O ARQUIVO 
	fclose($abrir);

Abaixo mensagem do sistema:

Por favor, preencha o seu nome.
CPF INVÁLIDO! Retorne e digite um CPF válido!
CADASTRO REALIZADO COM SUCESSO <- (isso não deveria ser mostrado,já que o campo nome e cpf são invalidos.)

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.