Validação De Formulário (básico)
#16
Posted 26/06/2008, 16:15
2 :: validação Javascript irrita o usuário muito menos
Se for o caso, use as duas!
Mas eu acho que uma modelagem de dados bem feita dispensa a validação no PHP na maioria dos casos.
#17
Posted 26/06/2008, 17:49
PROBLEMA:
1º - Se der algum erro, o formulário é todo limpo, tendo o trabalho de ter que preencher tudo novamente.
2º - Se eu preencher tudo corretamente inclusive o CPF, so que eu esquecer algum campo em branco por exemplo CIDADE, ele acusa que a CIDADE esta com erro mais também acusa que o CPF esta invalido, mesmo que eu tenha preenchido o CPF corretamente.
So falta isso pra eu terminar, resolver estes dois problemas.
<?php /* Se o CPF estiver no formato inválido vai aparecer aqui: */ if ($ver=="VerOk") { if ($status) { include "class/cad.php"; } else { echo "<div id=\"erros\"> <div style=\"background: #F4C400; padding: 3px; text-align:left;\"> <p>Ocorreram alguns problemas durante a tentativa de cadastro, os campos abaixo estão inválidos:</p></div>"; /* Verifica os outros campos do formulário */ if ($nome == "") { echo "* Nome completo <br />"; } if ($email == "") { echo "* E-mail <br />"; } if ($empresa == "") { echo "* Empresa <br />"; } if ($telefone == "") {echo "* Telefone <br />";} if ($endereco == "") {echo "* Endereço <br />";} if ($numero == "") {echo "* Número <br />";} if ($bairro == "") {echo "* Bairro <br />";} if ($cidade == "") {echo "* Cidade <br />";} if ($cep == "") {echo "* Cep <br />";} if ($descricao == "") {echo "* Descrição da Empresa <br />";} else { echo "O CPF: $cpf É INVÁLIDO!"; } } } echo "</div>"; ?></td>
Acima desse codigo tem o codigo de validacao de CPF do Adrielso.
OBS: A unica desvantagem em usar JS é de que o usuario pode desabilitar o JS? O padrao dos browser é com JS habilitado correto?
Aguardo resposta gente pra mim termina com esse formulário e entender de uma vez por todas as vantagens e desvantagens do uso de JS.
Vlw gente pela ajuda... ta sendo extremamente util para mim a ajuda de vcs.... vlwwww
#18
Posted 26/06/2008, 18:32
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...
É habilitado sim, mas a questão é que o usuário tem o poder de desativar quando quiser e se ele fizer isso, vários dados indesejáveis serão inseridos no seu banco de dados.
#19
Posted 26/06/2008, 18:55
agora so falta resolver esses dois problemas... brigadao...
#20
Posted 27/06/2008, 11:40
1 º Problema: Então você poderia usar o java script:history.back(-1); que retornaria na página sem perder os dados digitados no código que fiz não coloquei pois erra somete um exemplo vou te mandar o novo que tbm é Bem simples mais se precisar posso fazer uma mais melhorado para você testar... Também existem outras formas de fazer isso... um exemplo: (Você poderia jogar os valores digitados para variáveis e jogar na URL, e depois na página cadastro.php dar um echo... neles...). Também existem... outras possíbilidades... Mas da uma olhada nesse código.. aí!!!
Segue abaixo o código:
Página: cadastro.php
<html> <head> <title> Formulário Bá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 ($msg==1){ echo "<script>alert('Cadastro efetuado com sucesso.')</script>"; } ?>
Página: insere.php
<?php include "funcoes.php"; //Inclui pagina com funções. if (empty($nome) OR strlen($nome)<5) { echo "<script>alert('Digite o nome corretamente!')</script>"; echo "<script>java script:history.back(-1);</script>"; } elseif(empty($email) OR strlen($email)<8){ echo "<script>alert('Digite o E-mail corretamente!')</script>"; echo "<script>java script:history.back(-1);</script>"; } elseif (!verificacpf($cpf) OR empty($cpf)){ echo "<script>alert('O CPF digitado é inválido!')</script>"; echo "<script>java script:history.back(-1);</script>"; } else { $sql = mysql_query("INSERT INTO seudb (nome, email, cpf) VALUES ('$nome','$email','$cpf')"); header("Location: cadastro.php?msg=1"); } ?>
Página: Funcoes.php (Nessa página nada foi alterado).
<?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. } } ?>
2º Problema: Está tendo problema pelo seguinte no seu você uso if para todas as verificações use dessa forma abaixo:
<?php /* Se o CPF estiver no formato inválido vai aparecer aqui: */ if ($ver=="VerOk") { if ($status) { include "class/cad.php"; } else { echo "<div id=\"erros\"> <div style=\"background: #F4C400; padding: 3px; text-align:left;\"> <p>Ocorreram alguns problemas durante a tentativa de cadastro, os campos abaixo estão inválidos:</p></div>"; /* Verifica os outros campos do formulário */ if ($nome == "") { echo "* Nome completo <br />"; } elseif ($email == "") { echo "* E-mail <br />"; } elseif ($empresa == "") { echo "* Empresa <br />"; } elseif ($telefone == "") {echo "* Telefone <br />";} elseif ($endereco == "") {echo "* Endereço <br />";} elseif ($numero == "") {echo "* Número <br />";} elseif ($bairro == "") {echo "* Bairro <br />";} elseif ($cidade == "") {echo "* Cidade <br />";} elseif ($cep == "") {echo "* Cep <br />";} elseif ($descricao == "") {echo "* Descrição da Empresa <br />";} else { echo "O CPF: $cpf É INVÁLIDO!"; } } } echo "</div>"; ?></td>
Veja se esse código é o que você precisa... Se não de mais orientações do que você quer Ok??
Qq dúvida post no fórum!!!
Até ++
Att.
Edição feita por: Adrielso P. Teodoro, 27/06/2008, 15:51.
Suporte Técnico
-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0
#21
Posted 27/06/2008, 12:31
echo "<script>java script:history.back(-1);</script>";
se o usuario desabilitar o java, essa funcao nao ira funcionar correto? fazendo com que o formulario seja limpo novamente?
Adrielso, consegui aqui fazendo da seguinte maneira e sem usar JS, olha so como:
<td align="right">* Nome completo:</td> <td colspan="3"><input class="inputs" type="text" name="nome" id="nome" value="<?php echo $nome; ?>" /></td>
, agora o unico problema que falta é o seguinte:
2º - Se eu preencher tudo corretamente inclusive o CPF, so que eu esquecer algum campo em branco por exemplo CIDADE, ele acusa que a CIDADE esta com erro mais também acusa que o CPF esta invalido, mesmo que eu tenha preenchido o CPF corretamente.
brigadaooo...
#22
Posted 27/06/2008, 13:01
Se quiser fazer o teste deixe a descrição em branco você irá perceber que so irá aparecer o erro da descrição.
Ok!!! Testa aí!!! Estou pensando em uma solução!!!
Até +++
Att.
Adrielso, mais no caso se eu usar o codigo
echo "<script>java script:history.back(-1);</script>";
se o usuario desabilitar o java, essa funcao nao ira funcionar correto? fazendo com que o formulario seja limpo novamente?
Adrielso, consegui aqui fazendo da seguinte maneira e sem usar JS, olha so como:<td align="right">* Nome completo:</td> <td colspan="3"><input class="inputs" type="text" name="nome" id="nome" value="<?php echo $nome; ?>" /></td>
, agora o unico problema que falta é o seguinte:
2º - Se eu preencher tudo corretamente inclusive o CPF, so que eu esquecer algum campo em branco por exemplo CIDADE, ele acusa que a CIDADE esta com erro mais também acusa que o CPF esta invalido, mesmo que eu tenha preenchido o CPF corretamente.
brigadaooo...
Suporte Técnico
-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0
#23
Posted 27/06/2008, 17:26
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)