Jump to content


Photo

Validação De Formulário (básico)


  • Faça o login para participar
22 replies to this topic

#1 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 24/06/2008, 13:35

Bom gente, to com uma duvida aqui que to apanhando pra carai que é na validacao do meu formulario, tenho o seguinte codigo:

$x = mysql_query("INSERT INTO basico (categoria, empresa, cidade, estado, cep, telefone, endereco, numero, bairro, descricao, palavra, nome, cpf, cnpj, telcelular, data, expiraem) VALUES ('$categoria', '$empresa', '$cidade', '$estado', '$cep', '$telefone', '$endereco', '$numero', '$bairro', '$descricao', '$palavrachave', '$nome', '$cpf', '$cnpj', '$telcelular', '$data', '$expiraem')");

	if ($cpf == "") {echo "Formato do CPF esta inválido.";} 
	else 
	{
	if ($x)
	{
	echo "O cadastro foi efetuado com sucesso";
	}
	else
	{
	echo "O cadastro não pode ser efetuado " . mysql_error();
	}	
	}
?>

Só que praticamente nao tem nada funcionando ai, quando o campo $cpf ta vazio, ele da a mensagem de CPF invalido mais mesmo assim da o INSERT no db.... Se alguem puder me ajudar fico muito grato.... Obrigado a todos...

#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 24/06/2008, 13:39

Veja só: o comando mysql_query serv e para executar a query...

coloque essa linha dentro do else

#3 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 24/06/2008, 13:46

Simples Donizeth voce só precisa colocar o código que insere os dados no BD dentro da condicional... Porque ali antes de mais nada ele tá inserindo os dados e só depois verificando se o campo está vazio ou não...

Faça assim:
[CODEBOX]
<?php
if ($cpf == "") {echo "Formato do CPF esta inválido.";}
else {

$x = mysql_query("INSERT INTO basico (categoria, empresa, cidade, estado, cep, telefone, endereco, numero, bairro, descricao, palavra, nome, cpf, cnpj, telcelular, data, expiraem)
VALUES ('$categoria', '$empresa', '$cidade', '$estado', '$cep', '$telefone', '$endereco', '$numero', '$bairro', '$descricao', '$palavrachave', '$nome', '$cpf', '$cnpj', '$telcelular', '$data', '$expiraem')");

if ($x) { echo "O cadastro foi efetuado com sucesso"; }
else {
echo "O cadastro não pode ser efetuado " . mysql_error();
}
}?>
[/CODEBOX]

Edição feita por: Marcivone, 24/06/2008, 13:48.


#4 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 24/06/2008, 14:34

Marcivone, eu consegui fazer desse modo, so que dai pensei nos outros campos além do cpf, como $nome, $endereco, etc.... teria que fazer tudo isso? dai o codigo iria ficar enorme, ou qual é a solucao mais prática e fácil para mim adicionar outros campos na validacao além do cpf? OBrigado a todos... vlw pelas dicas...

#5 Adrielso P. Teodoro

Adrielso P. Teodoro

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Campinas/SP
  • Interesses:PHP, Hardware, HTML, CSS e XML

Posted 24/06/2008, 14:48

Ola meu caro amigo... segue abaixo o código para você utilizar... Esse código é melhor pois ele faz a validação do CPF verifica se ele é valído calculando pelo digito verificador do CPF... Qualquer dúvida so responder o POST....

E Pessoal sugestões postem....


Até mais pessoal!!!

Atenciosamente,

Adrielso P. T. (y)

<?
//RECEBE OS DADOS DO FORMULÁRIO
$ver = $_POST["ver"];
$cpf = $_POST["cpf"];

 //VERIFICA SE O QUE FOI INFORMADO É NÚMERO SE NÃO FOR SO NÚMEROS SÃO RETIRADOS OS PONTOS E DIGITOS.
 if(!is_numeric($cpf)) {
  $cpf = str_replace(".","",$cpf);
  $cpf = str_replace("-","",$cpf);
 }
 //VERIFICA SE O VALOR DE $cpf ESTÁ VAZIO OU NÃO NÚMERICO
 if(!is_numeric($cpf) OR empty($cpf))
 {
  $status == false; //SE VERDADEIRO ATRIBUI O VALOR false À VARIAVEL $status.
 }

//VERIFICA SE O CPF NÃO SÃO NÚMEROS INVÁLIDOS. EX: 22222222222
  if( ($cpf == '11111111111') || ($cpf == '22222222222') ||
   ($cpf == '33333333333') || ($cpf == '44444444444') ||
   ($cpf == '55555555555') || ($cpf == '66666666666') ||
   ($cpf == '77777777777') || ($cpf == '88888888888') ||
   ($cpf == '99999999999') || ($cpf == '00000000000') ) {
   $status = false; //SE O IF FOR VERDADEIRO ATRIBUI O VALOR false A VÁRIAVEL $status
  }

  else {
   //PEGA O DIGITO VERIFIACADOR
   $dv_informado = substr($cpf, 9,2);

   for($i=0; $i<=8; $i++) {
	$digito[$i] = substr($cpf, $i,1);
   }

   //CALCULA O VALOR DO 10º DIGITO DE VERIFICAÇÂO
   $posicao = 10;
   $soma = 0;

   for($i=0; $i<=8; $i++) {
	$soma = $soma + $digito[$i] * $posicao;
	$posicao = $posicao - 1;
   }

   $digito[9] = $soma % 11;

   if($digito[9] < 2) {
	$digito[9] = 0;
   }
   else {
	$digito[9] = 11 - $digito[9];
   }

   //CALCULA O VALOR DO 11º DIGITO DE VERIFICAÇÃO
   $posicao = 11;
   $soma = 0;

   for ($i=0; $i<=9; $i++) {
	$soma = $soma + $digito[$i] * $posicao;
	$posicao = $posicao - 1;
   }

   $digito[10] = $soma % 11;

   if ($digito[10] < 2) {
	$digito[10] = 0;
   }
   else {
	$digito[10] = 11 - $digito[10];
   }

  //VERIFICA SE O DV CALCULADO É IGUAL AO INFORMADO
  $dv = $digito[9] * 10 + $digito[10];
  if ($dv != $dv_informado) {
   $status = false; //SE O DIGITO CALCULADO FOR DIFERENTE DO INFORMADO false É ATRIBUÍDO À $status.
  }
  else
   $status = true; //ATRIBUI AO $status O VALOR true. SIGNIFICA QUE O CPF É VALIDO.
   $x = mysql_query("INSERT INTO basico (categoria, empresa, cidade, estado, cep, telefone, endereco, numero, bairro, descricao, palavra, nome, cpf, cnpj, telcelular, data, expiraem) VALUES ('$categoria', '$empresa', '$cidade', '$estado', '$cep', '$telefone', '$endereco', '$numero', '$bairro', '$descricao', '$palavrachave', '$nome', '$cpf', '$cnpj', '$telcelular', '$data', '$expiraem')");
  }
?>

<html>
<head>
<title>Validação de CPF</title>
</head>
<body bgcolor="#FFFFFF">
<h2>Validação de CPF</h2>
<form name="frm_cpf" action="<? echo $_SERVER["PHP_SELF"];?>" method="post">
CPF: <input type="text" name="cpf" maxlength="14">
<input type="submit" value="Validar CPF" name="btnValidar">
<input type="hidden" value="VerOk" name="ver">
</form>
<?

if ($ver=="VerOk") {

if ($status) {
echo "<font color=\"RED\">O CPF: <b>$cpf</b> É VÁLIDO!</FONT>";
}

else {
echo "<font color=\"RED\">O CPF: <b>$cpf</b> É INVÁLIDO!</FONT>";
}
}
?>
</body>
</html>

Adrielso Pinto Teodoro
Suporte Técnico

-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0

#6 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 24/06/2008, 15:58

Adrielso vlw mesmo pelo codigo, mais além da validacao do campo $cpf, tenho vários outros que precisam ser validados... é onde esta minha duvida.... Obrigado a todos... vlllwww...

#7 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 24/06/2008, 20:12

Você pode colocar outras condicionais mais assim:
[CODEBOX]
<?php
if ($cpf == "") {
echo "Formato do CPF esta inválido.";
}

// TESTE DE OUTROS CAMPOS, PODE COLOCAR ELSE IF QUANTAS VEZES FOR NECESSÁRIO, NÃO ESQUECENDO DE ABRIR E FECHAR CHAVES
else if { AQUI OUTRA VERIFICAÇÃO}
else if { AQUI OUTRA VERIFICAÇÃO}
else if { AQUI OUTRA VERIFICAÇÃO}

else {
$x = mysql_query("INSERT INTO basico (categoria, empresa, cidade, estado, cep, telefone, endereco, numero, bairro, descricao, palavra, nome, cpf, cnpj, telcelular, data, expiraem) VALUES ('$categoria', '$empresa', '$cidade', '$estado', '$cep', '$telefone', '$endereco', '$numero', '$bairro', '$descricao', '$palavrachave', '$nome', '$cpf', '$cnpj', '$telcelular', '$data', '$expiraem')");
if ($x) {
echo "O cadastro foi efetuado com sucesso";
} else {
echo "O cadastro não pode ser efetuado " . mysql_error();
}
}
?>
[/CODEBOX]

#8 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 25/06/2008, 19:46

Marcivone valeu pela tua dica... andei pensando aqui e pintou uma outra duvida, como estou começando agora em PHP, fiquei em duvida de um tipo de validação padrão, vou explicar a duvida, tenho duas paginas "cadastro.php" que é onde se encontra o form e a "insert.php" que é onde se encontra o codigo para inserção do DB, qual seria a forma mais adequada para mim fazer a validacao? seria dentro da pagina "cadastro.php" ou dentro da "insert.php", pois eu estava fazendo na insert.php, so que dai na validacao abre a pagina insert.php, dai resumindo, tenho que montar o codigo pra inserir no DB em uma pagina com layout igual... Dai se eu validar na "cadastro.php" nao vai precisar nem chamar a "insert.php" so ira ocorrer a chamativa quando tiver tudo certo para a inserção... Aguardo respostas.... muito obrigado a todos....

#9 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 25/06/2008, 21:18

Donizeth caso voce queria voce pode fazer a validação na pagina cadastro.php usando javascript, se caso tiver tudo de acordo, aí sim é submetido o formulário para a página insert.php, mais é interessante voce deixar também a validação em php na página insert.php, isso lhe dará mais segurança, dá uma pesquisa na seção de javascript por validação de campos que vai encontrar algo lá que vai te ajudar.

Qualquer duvida continua postando ae

Falows

#10 Adrielso P. Teodoro

Adrielso P. Teodoro

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Campinas/SP
  • Interesses:PHP, Hardware, HTML, CSS e XML

Posted 26/06/2008, 11:29

Ola amigo fiz um código bem simples pra te ajudar....


Você pode fazer dessa forma que fica muito bom so vai ter que adptar ao seu layout e adicionar novos campos e verificações...

Veja abaixo:

Página: cadastro.php (Essa página é a página visivel pelo usuário - Formulário de Cadastro.)

<html>
<head>
<title> Formul&aacute;rio B&aacute;sico</title>
</head>
<body>
<form method="POST" action="insere.php">
Nome: <input type="text" name="nome" title="Digite seu nome" size="15">
E-mail: <input type="text" name="email" title="Digite seu e-mail" size="15">
CPF: <input type="text" name="cpf" title="Digite seu CPF">
<input type="submit" value="Enviar" name="BtnEnviar">
</form>
</body>
</html>
<?
if ($erro==1) {
	echo "<script>alert('Digite o nome corretamente!')</script>";
}
elseif ($erro==2){
	echo "<script>alert('Digite o E-mail corretamente!')</script>";
}
elseif ($erro==3){
	echo "<script>alert('O CPF digitado é inválido!')</script>";
}
elseif ($msg==1){
	echo "<script>alert('Cadastro efetuado com sucesso.')</script>";
}

?>


Página: insere.php (Página onde são feitas as verificações dos campos e inserção no banco de dados.)

<?php
include "funcoes.php"; //Inclui pagina com funções.

if (empty($nome) OR strlen($nome)<5) {
	header ("Location: cadastro.php?erro=1");
}
elseif(empty($email) OR strlen($email)<8){
	header("Location: cadastro.php?erro=2");
}
elseif (!verificacpf($cpf) OR empty($cpf)){
	header("Location: cadastro.php?erro=3");
}
else {
	$sql = mysql_query("INSERT INTO seudb (nome, email, cpf) VALUES ('$nome','$email','$cpf')");
	header("Location: cadastro.php?msg=1");
}

?>


Página: funcoes.php (Página que contem as funções de conexão com banco de dados e validação do CPF).

<?php

conexaobd(); //Inicia a conexão com banco de dados.

function conexaobd(){

$conexao = mysql_connect("seuservidor","seuusuario","suasenha");
$bd = mysql_select_db("seubd");

}

function verificacpf($cpf){

 //VERIFICA SE O QUE FOI INFORMADO É NÚMERO SE NÃO FOR SO NÚMEROS SÃO RETIRADOS OS PONTOS E DIGITOS.
 if(!is_numeric($cpf)) {
  $cpf = str_replace(".","",$cpf);
  $cpf = str_replace("-","",$cpf);
 }
 //VERIFICA SE O VALOR DE $cpf ESTÁ VAZIO OU NÃO NÚMERICO
 if(!is_numeric($cpf) OR empty($cpf))
 {
   return 0; //SE VERDADEIRO ATRIBUI O VALOR false À VARIAVEL $status.
 }

//VERIFICA SE O CPF NÃO SÃO NÚMEROS INVÁLIDOS. EX: 22222222222
  if( ($cpf == '11111111111') || ($cpf == '22222222222') ||
   ($cpf == '33333333333') || ($cpf == '44444444444') ||
   ($cpf == '55555555555') || ($cpf == '66666666666') ||
   ($cpf == '77777777777') || ($cpf == '88888888888') ||
   ($cpf == '99999999999') || ($cpf == '00000000000') ) {
   return 0; //SE O IF FOR VERDADEIRO ATRIBUI O VALOR false A VÁRIAVEL $status
  }

  else {
   //PEGA O DIGITO VERIFIACADOR
   $dv_informado = substr($cpf, 9,2);

   for($i=0; $i<=8; $i++) {
	$digito[$i] = substr($cpf, $i,1);
   }

   //CALCULA O VALOR DO 10º DIGITO DE VERIFICAÇÂO
   $posicao = 10;
   $soma = 0;

   for($i=0; $i<=8; $i++) {
	$soma = $soma + $digito[$i] * $posicao;
	$posicao = $posicao - 1;
   }

   $digito[9] = $soma % 11;

   if($digito[9] < 2) {
	$digito[9] = 0;
   }
   else {
	$digito[9] = 11 - $digito[9];
   }

   //CALCULA O VALOR DO 11º DIGITO DE VERIFICAÇÃO
   $posicao = 11;
   $soma = 0;

   for ($i=0; $i<=9; $i++) {
	$soma = $soma + $digito[$i] * $posicao;
	$posicao = $posicao - 1;
   }

   $digito[10] = $soma % 11;

   if ($digito[10] < 2) {
	$digito[10] = 0;
   }
   else {
	$digito[10] = 11 - $digito[10];
   }

  //VERIFICA SE O DV CALCULADO É IGUAL AO INFORMADO
  $dv = $digito[9] * 10 + $digito[10];
  if ($dv != $dv_informado) {
   return 0; //SE O DIGITO CALCULADO FOR DIFERENTE DO INFORMADO false É ATRIBUÍDO À $status.
  }
  else
   return 1; //SIGNIFICA QUE O CPF É VALIDO.
  }

}

?>


Espero que esse código resolva todos seus problemas.... Para fazer novas verificações no código so adicionar novos elseif na página insere.php....


Qq coisa post sua dúvida no fórum...


Att.

Adrielso P. T. (y)
Adrielso Pinto Teodoro
Suporte Técnico

-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0

#11 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 26/06/2008, 13:56

Marcivone e Adrielso, gente muito obrigado pela ajuda mesmo, vcs tao tirando várias duvidas minhas, Marcivone em relacao a tua citação, alguns tutoriais e até topicos que eu li dizem que nao é bom usar validação / mascaras em JS, mais o motivo não tinha, vocês poderiam me dizer o motivo no qual alguns programadores dizem isso? para evitar o máximo uso de JS em websites? Adrielso, vou adaptar este codigo em meu site aqui e posto lhe dizendo, mais desde já muito obrigado, vlw a todos gente....

OBS: se puderem me tirar esta outra duvida acima.... vlwww....

#12 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 26/06/2008, 14:12

Olha isso:
class

flws..

#13 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 26/06/2008, 14:51

Marcivone e Adrielso, gente muito obrigado pela ajuda mesmo, vcs tao tirando várias duvidas minhas, Marcivone em relacao a tua citação, alguns tutoriais e até topicos que eu li dizem que nao é bom usar validação / mascaras em JS, mais o motivo não tinha, vocês poderiam me dizer o motivo no qual alguns programadores dizem isso? para evitar o máximo uso de JS em websites? Adrielso, vou adaptar este codigo em meu site aqui e posto lhe dizendo, mais desde já muito obrigado, vlw a todos gente....

OBS: se puderem me tirar esta outra duvida acima.... vlwww....


javascript é uma linguagem do lado do cliente interpretada pelo seu navegador, ele (usuário) pode modificar o código, ou até mesmo desativar o javascript e a sua validação não funcionaria.

Com PHP o usuário não tem como modificar o código, nem desativar o PHP.

#14 Adrielso P. Teodoro

Adrielso P. Teodoro

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Campinas/SP
  • Interesses:PHP, Hardware, HTML, CSS e XML

Posted 26/06/2008, 15:03

Nem preciso falar mais nada o victorhb já disse tudo :D


Até +++ (y)
Adrielso Pinto Teodoro
Suporte Técnico

-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0

#15 donizeth

donizeth

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino

Posted 26/06/2008, 15:46

humm, agora entendi victorhb, essa seria a unica desvantagem de usar JS? e tpw, o modo padrão dos browser é o JAVA habilitado ou desabilitado?

Adrielso, adaptei teu codigo em meu site, e surgiu um problema tpw, se eu preencher o formulario todo, e o CPF estiver inválido, o formulário é completamente limpo, fazendo com que o usuário tenha que digitar todo o formulário novamente, teria como contornar isso? fazendo com q ele mostre o erro mais não apague o formulário? Obrigado a todos.... aguardo respostas se possivel....



OBS: estou esclarecendo todas minhas dúvidas em relação a isso graças a vcs.... vlw...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq