Ir para conteúdo

POWERED BY:

Arquivado

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

Luiz Henrique

Validação de formulário

Recommended Posts

olá,

 

antes meu problema era verificar se o campo foi digitado e se os dados eram corretos agora o problema é que ele faz as verificações certas mas mesmo assim ele envia o e-mail sendo que os campos q tem verificação sejam falso:

<?		if($nome == "" or $nome == "0"){			echo"nome não digitado--->";			}		if (strpos ($email, "@") == 0) {		echo "--------O e-mail digitado é inválido.";			}		else				  echo "enviado"; //só para verificar se os campos mesmo como false passam por aqui			$nome = $_POST["nome"];			$email = $_POST["email"];			$mensagem = "Mensagem\n\n";			$mensagem .= "Nome: $nome\n";			$mensagem .= "E-mail: $email\n";			$mensagem .= "Telefone: $telefone\n\n";			$mensagem .= "Mensagem: $contato";			mail("email", "Mensagem ", $mensagem);			header("location: /contato.htm");		?>

como vcs poderm ver logo abaixo do else eu digitei uma linha echo, para verificar se quando eu não digitasse o nome por exemplo ele não passaria por ali, funcionou no sentido de ele não imprimir a linha mas o código é executado e o email é enviado sem nome, por que isso?

já tentei resolver isso usando while, for , do - while, alguém tem um jeito de resolver isso aguardo.

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,Essa validação está no mesmo script que o formulário? Pelo que eu vi você tem uma pagina chamada contato.htmEu geralmente faço a validação com dois scripts, fica mais fácil de controlar.Um script com o formulário e outro para validar e enviar.Tipo:if($nome == "" or $nome == "0"){ header("Location: formulario.php?msg=nome não digitado"); exit;}Acima do formulário eu coloco:<? echo $HTTP_GET_VARS['msg'];?>Se o cara não preencher os dados eu volto ele para a página de formulário.ou derrepente fazer um if tipo:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Twunay,o formulário é o contato.htm q envia os dados para submit.php, q é o código postado, o meu problema é que ele envia os dados tanto com as condições true como false, se eu fizer isso não vai resolver pois ele executa o código inteiro do mesmo jeito, não tem outra solução?aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou assim:

 

 

$nome = $_POST["nome"]; // isto tem q vir antesif($nome == "" or $nome == "0"){echo"nome não digitado--->";			}else { mail("email", "Mensagem ", $mensagem);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu não entendi qual o problema no sistema estar em dois arquivos. Voce vai fazer o IF verificando se o campo está vazio, se estiver você manda pra pagina de cadastro com a mensagem de erro.ELSE senão a função mail() envia os dados.O q mais precisamente você não entendeu?

Célio-Ctba,como eu disse o formulário é separado do script

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

acho que eu não expliquei direito, o que o Célio-Ctba está dizendo é o que esta acontecendo normalmente, se algum campo estiver faltando ele da a mensagem de erro , caso contrário envia para o meu e-mail os dados, mas o que esta acontecendo é que tanto com os dados preenchidos como não preenchidos eles estão sendo enviados para o meu e-mail, se eu deixo de preencher algum campo ele da a mensagem que esta faltando preencher tal campo , mas mesmo assim o e-mail é enviado e pior com o campo vazio , o código do formulario é aquele que eu postei, está tudo funcionando como é pra funcionar em um formulário menos issso ele envia os dados mesmo não preenchidos

 

PHP

<?		if($nome == "" or $nome == "0"){			echo"nome não digitado--->";			}		if (strpos ($email, "@") == 0) {		echo "--------O e-mail digitado é inválido.";			}		else					$nome = $_POST["nome"];			$email = $_POST["email"];			$txt = $_POST["txt"];			$mensagem = "Mensagem enviada por um visitante\n\n";			$mensagem .= "Nome: $nome\n";			$mensagem .= "E-mail: $email\n";			$mensagem .= "Telefone: $telefone\n\n";			$mensagem .= "Mensagem: $contato";			mail("meu@email.com.br", "Mensagem enviada por um visitante", $txt);			header("location: /contato.htm");		?>

HTML

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Contato</title></head><body><form id="form1" name="form1" method="post" action="">  <label>Nome:  <input name="nome" type="text" id="nome" />  </label>  <p>	<label>E-mail:	<input name="email" type="text" id="email" />	</label>  </p>  <p>	<label>Telefone:	<input name="fone" type="text" id="fone" />	</label>  </p>  <p>	<label>Mensagem:	<textarea name="txt" id="txt"></textarea>	</label>  </p>  <p>	<label>	<input name="Enviar" type="submit" id="Enviar" value="Submit" />	</label>  </p></form></body></html>
os códigos estão ai, obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá,

Consegui, não era bem como eu estava querendo mas serve e pra quem estiver precisando, eu usei os if das verificações dos campos e dentro de cada if deste eu coloquei uma variável frm="nao" e inicializei ela como frm="sim" então eu fiz um if que era o script q iria mandar os dados esse if verificava se a variavel era sim se foce ele enviava.

agora vou para o cabecalho, q esta outra guerra rs...

consegui achar este:

$headers = "MIME-Version: 1.0\n";$headers .= "Content-type: text/html; charset=iso-8859-1\n";$headers .= "X-Priority: 1 (Highest)\n"; //1, 2, 3, 4 ou 5$headers .= "X-MSMail-Priority: High\n"; //Low, Normal ou High$headers .= "From: $nome <$email>\n";$headers .= "Reply-To: $reply <$reply_email>\n";

mas não sei como iserir ela

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá,a sim mas tem muitas outras verificações a serem feitas, mas é que eu estava tendo problemas por isso q fiz somente do nome e-mail, tbm se digitar numeros no nome ele passa, tenho q procurar essas coisas tbm, mas valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce pode fazer assim;

 

if(empty($name)){echo "preencha o campo nome";}elseif(!strspn($nome,"abcdefghijklmnopqrstuvxzwyABCDEFGHIJKLMNOPQRSTUVXZWY@_.0123456789")== strlen($nome)){echo "caracteres inválidos";}}elseif (!preg_match("/@.*.\./",$email)) {echo "email invalido";}}else{//envia email aki}

eu uso estes beleza

 

valews

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, notei uma falha nesse código

 

<?		if($nome == "" or $nome == "0"){			echo"nome não digitado--->";			}		if (strpos ($email, "@") == 0) {		echo "--------O e-mail digitado é inválido.";			}		else			{ //tava faltando abrir o else				  echo "enviado"; //só para verificar se os campos mesmo como false passam por aqui			$nome = $_POST["nome"];			$email = $_POST["email"];			$mensagem = "Mensagem\n\n";			$mensagem .= "Nome: $nome\n";			$mensagem .= "E-mail: $email\n";			$mensagem .= "Telefone: $telefone\n\n";			$mensagem .= "Mensagem: $contato";			mail("email", "Mensagem ", $mensagem);			header("location: /contato.htm");					} //fechando o else?>

 

acho q pode ser isso...

 

[]s

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.