Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo123

[Resolvido] Formulário com campos obrigatorio

Recommended Posts

O problema de usar javascript é que no netscape pode não funcionar e no IE tem como desabilitar...no php você pode testar assim:if(nome =="){echo "O campo nome não foi preenchido corretamente;"}else{executar......}Exemplo: <?$MailTo = "nome@servidor.com.br"; //receptor do e-mail$MailSubject = "Contato através do Site"; //text do assunto$MailHeader = "From: nome@servidor.com.br"; //texto do campo "DE"/* Following routines put values entered in the form fields into variables and then put the results in the global variable MailBody which will be the Body part of the message */$Envoi = 1; //give value 1 to the variable $Envoiif ($champ1 == ""){ //name of field 1 echo("<font face=verdana size=2>O campo <b>nome</b> não foi preenchido corretamente.</font><br>"); //message to be displayed if the field is left empty $Envoi = 0; //if field 1 is empty, variable $Envoi takes value 0}else { $MailBody = "Nome: $champ1\n"; //if field 1 has been completed, value is inserted in variable MailBody}if ($champ2 == ""){ echo("<font face=verdana size=2>O campo <b>e-mail</b> não foi preenchido corretamente.</font><br>"); $Envoi = 0;}else { $MailBody .= "E-mail : $champ2\n";}if ($champ3 == ""){ echo("<font face=verdana size=2>O campo <b>fone</b> não foi preenchido corretamente.</font><br>"); $Envoi = 0;}else { $MailBody .= "Fone: $champ3\n";}if ($champ4 == ""){ echo("<font face=verdana size=2>O campo <b>cidade</b> não foi preenchido corretamente.</font><br>"); $Envoi = 0;}else { $MailBody .= "Cidade : $champ4\n";}if ($champ5 == "0"){ echo("<font face=verdana size=2>O campo <b>estado</b> não foi preenchido corretamente.</font><br>"); $Envoi = 0;}else { $MailBody .= "Estado : $champ5\n";} $MailBody .= "Comentário : $champ6\n";//Routine for checkboxes // $MailBody .="Comentário : ";//$items = 3; //initiate possible # of items//for ($i = 1; $i <= $items; $i++) { //loop on # of items // $MailBody .= "$champ8[$i], "; //put results in variable MailBody//}//Routine to send messageif ($Envoi == 1) { //Check that variable $Envoi has value 1mail($MailTo, $MailSubject, $MailBody, $MailHeader); //message sendecho("<p><center><font face=verdana size=2>Sua mensagem foi enviada com sucesso.<br>Em breve entraremos em contato.</center></font>"); //Confirmation message.}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

exato giselly, mas eu geralmente uso de oturo modo que acho mais simples:

 

if(trim($_POST["variavel"]) == '') {echo "campo obrigatório!";}

 

ou então...

 

if(empty($_POST["variavel"])) { echo "campo obrigatório!";}

 

 

:D

 

100+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal aproveitamdo o assunto, sou iniciante no PHP e tenho este código que mesmo sendo campos obrigatórios eu recebo o e-mail vazio

Gostaria de receber o e-mail somente com os dados, pois são obrigatórios.

Alguem sabe o que esta errado no código?

<form action="contatoSend.php" method="post" name="contato">        nome<br>    <input class="textoP" type="text" name="nome" size="22" border="0"><br>         empresa<br>    <input class="textoP" type="text" name="empresa" size="22" border="0"><br>         telefone<br>    <input class="textoP" type="text" name="telefone" size="22" border="0"><br>         e-mail<br>    <input class="textoP" type="text" name="email" size="22" border="0"><br>         comentários<br>    <textarea class="textoP" name="mensagem" rows="7" cols="21"></textarea><br>    <input class="textoP" type="submit" value="submit" name="submit" value="Enviar" border="0"></form><?# quem recebe$recipient = "contact@connectionbusiness.com";# assunto do e-mail$subject  = "Contato via site - CONNECTION";# corpo da mensagem (mensagem que é enviada)$message .= '<STYLE>BODY {background-position: left top; background-repeat: repeat-y; margin-top: 80px; margin-left: 60px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #000000;} .style1 {font-size: 10px; color: #000000} .style2 {font-size: 10px; color: #C80000} #layer1  { position: absolute; z-index: 1; top: 0px; left: 25px; width: 169px; height: 56px; visibility: visible; display: block }</STYLE>';$message .= '<body background="http://www.connectionbusiness.com/v2.0/BR/imagens/wallpaper.gif" bgcolor="#ffffff">';$message .= '<div id="layer1"><img src="http://www.connectionbusiness.com/v2.0/BR/imagens/logo-connection.gif" alt="" height="56" width="169" border="0"></div>';$message .= '<span class="style1">CONTATO DO CLIENTE</span><br>';$message .= '<br><b>Nome:</b> ';$message .= "$nome";$message .= '<br><br><b>Empresa:</b> ';$message .= "$empresa";$message .= '<br><br><b>Telefone:</b> ';$message .= "$telefone";$message .= '<br><br><b>E-mail:</b> ';$message .= "$email";$message .= '<br><br><b>Mensagem:</b> ';$message .= "$mensagem";$message .= '<br><hr>';# quem envia$headers .= "From: $nome <$email>\n"; #Não alterar$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; #Não alterar# envia e-mailsmail($recipient, $subject, $message, $headers); #Não alterar#campos obrigatóriosif (empty($_POST['nome'])) { echo"<script>alert ('Favor colocar seu nome')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['empresa'])) { echo"<script>alert ('Favor colocar o nome de sua empresa')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['telefone'])) { echo"<script>alert ('Favor colocar o seu Telefone')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['email'])) { echo"<script>alert ('Favor colocar seu E-mail')</script>"; echo"<script>history.go(-1);</script>";}# redireciona a páginaheader("location:contatoOK.html");?>

Obriago pela força...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu jeito pra faze isso eh + complicado q qq um desses... mas eu sinceramente acho q vale a pena, vo da um exemplo com apenas 2 campos aqui:

 

agente vai precisa de 2 paginas:

 

<html><head><title> Campos Obrigatorios </title><script>function ajaxInit() {  var req;  try {    req = new ActiveXObject("Microsoft.XMLHTTP");  } catch(e) {    try {      req = new ActiveXObject("Msxml2.XMLHTTP");    } catch(ex) {      try {        req = new XMLHttpRequest();      } catch(exc) {        req = null;        alert("Seu browser nao tem suporte ao Ajax");      }    }  }  return req;}function sendForm(f) {  var ajax = ajaxInit();  if(ajax) {    ajax.open("POST", "recebimento.php", null);    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    ajax.onreadystatechange = function() {      if(ajax.readyState == 4) {        if(ajax.status == 200) {          respStat = ajax.responseText.charAt(0);          respTxt = ajax.responseText.substring(2);          if(resp.charAt(0) == "+") {            alert(respTxt);            f.reset();          } else {            alert(respTxt);          }        } else {          alert("Erro ao enviar dados: " + ajax.statusText);        }      }    };    ajax.send("nome=" + f.nome.value + "&email=" + f.email.value);  }}</script></head><body><form onsubmit="sendForm(this); return false;">Nome: <input type="text" name="nome"><br>Email: <input type="text" name="email"><br><button type="submit">Enviar</button></form></body></html>
agora a pagina PHP

 

recebimento.php

PHP

[*]<?php

[*]

[*]$nome = $_POST["nome"];

[*]$email = $_POST["email"];

[*]

[*]if(!$nome)

[*] die("-:o campo nome não foi preenchido");

[*]

[*]if(!$email)

[*] die("-:o campo email não foi preenchido");

[*]

[*]/*processamento dos dados*/

[*]

[*]echo "+:Formulario enviado com sucesso";

[*]

[*]?>

 

bom, realmente n eh simples, mas essa foi uma verificacao client+server

 

o javascript enviou os dados, q foram verificados pelo PHP, ou seja, c alguem enviasse esses dados externamente, eles seriam verificados da mesma maneira, essa technologia para embutir PHP com Javascript c chama Ajax, e eu ja testei nos browsers:

 

-Internet Explorer

-FireFox

-Netscape

-Mozilla

 

e funcionou perfeitamente em ambos, quem quizer + informacoes sobre Ajax, eu postei um tutorial sobre isso aki na iMasters:

 

http://www.imasters.com.br/forum/index.php?showtopic=132737

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que compliquei na hora de perguntar... então reformulei a pergunta para ficar mais fácil entender minha dúvida.

O código funciona do jeito que eu quero, o esta acontecendo é o seguinte:

Quando o usuário clica em enviar ele recebe o aviso que não preencheu determinado campo, ai ele clica em ok e retorna para o form para completar seu cadastro, até aqui tudo perfeito, o problema é que eu recebo o e-mail mesmo assim.

 

Gostaria de receber o e-mail somente quando o usuário inserir todos os dados necessários. Alguém sabe o que esta acontecendo?

 

<form action="contatoSend.php" method="post" name="contato">        nome<br>    <input class="textoP" type="text" name="nome" size="22" border="0"><br>         empresa<br>    <input class="textoP" type="text" name="empresa" size="22" border="0"><br>         telefone<br>    <input class="textoP" type="text" name="telefone" size="22" border="0"><br>         e-mail<br>    <input class="textoP" type="text" name="email" size="22" border="0"><br>         comentários<br>    <textarea class="textoP" name="mensagem" rows="7" cols="21"></textarea><br>    <input class="textoP" type="submit" value="submit" name="submit" value="Enviar" border="0"></form><?# quem recebe$recipient = "contact@connectionbusiness.com";# assunto do e-mail$subject  = "Contato via site - CONNECTION";# corpo da mensagem (mensagem que é enviada)$message .= '<STYLE>BODY {background-position: left top; background-repeat: repeat-y; margin-top: 80px; margin-left: 60px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #000000;} .style1 {font-size: 10px; color: #000000} .style2 {font-size: 10px; color: #C80000} #layer1  { position: absolute; z-index: 1; top: 0px; left: 25px; width: 169px; height: 56px; visibility: visible; display: block }</STYLE>';$message .= '<body background="http://www.connectionbusiness.com/v2.0/BR/imagens/wallpaper.gif" bgcolor="#ffffff">';$message .= '<div id="layer1"><img src="http://www.connectionbusiness.com/v2.0/BR/imagens/logo-connection.gif" alt="" height="56" width="169" border="0"></div>';$message .= '<span class="style1">CONTATO DO CLIENTE</span><br>';$message .= '<br><b>Nome:</b> ';$message .= "$nome";$message .= '<br><br><b>Empresa:</b> ';$message .= "$empresa";$message .= '<br><br><b>Telefone:</b> ';$message .= "$telefone";$message .= '<br><br><b>E-mail:</b> ';$message .= "$email";$message .= '<br><br><b>Mensagem:</b> ';$message .= "$mensagem";$message .= '<br><hr>';# quem envia$headers .= "From: $nome <$email>\n"; #Não alterar$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; #Não alterar# envia e-mailsmail($recipient, $subject, $message, $headers); #Não alterar#campos obrigatóriosif (empty($_POST['nome'])) { echo"<script>alert ('Favor colocar seu nome')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['empresa'])) { echo"<script>alert ('Favor colocar o nome de sua empresa')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['telefone'])) { echo"<script>alert ('Favor colocar o seu Telefone')</script>"; echo"<script>history.go(-1);</script>";}if (empty($_POST['email'])) { echo"<script>alert ('Favor colocar seu E-mail')</script>"; echo"<script>history.go(-1);</script>";}# redireciona a páginaheader("location:contatoOK.html");?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de agradecer dD|Fusion pois me ajudou bastante.

Para informar e ajudar outros com o mesmo problema segue a solução:

 

No código mudar a linha:# envia e-mails[COLOR=red]mail($recipient, $subject, $message, $headers); #Não alterar[/COLOR]Para depois das linhas:#campos obrigatóriosif (empty($_POST['nome'])) { echo"<script>alert ('Favor colocar seu nome')</script>"; echo"<script>history.go(-1);</script>";}else{# envia e-mails[COLOR=red]mail($recipient, $subject, $message, $headers); #Não alterar[/COLOR]}

Mais uma vez obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.. usei AJAX para preenchimento de combos.

 

Seleciona estado, e conforme o estado, preenche o combo de cidades, por exemplo.

 

Funciona super lindo.. com um único problema http://forum.imasters.com.br/public/style_emoticons/default/devil.gif .. as cidades acentuadas e com ç , ao imprimir, come 2 caracteres, trocando o local da acentuação por "?" .. alguém pode me informar como resolver este problemão?

 

Um abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.. usei AJAX para preenchimento de combos.

 

Seleciona estado, e conforme o estado, preenche o combo de cidades, por exemplo.

 

Funciona super lindo.. com um único problema  http://forum.imasters.com.br/public/style_emoticons/default/devil.gif .. as cidades acentuadas e com ç , ao imprimir, come 2 caracteres, trocando o local da acentuação por "?" .. alguém pode me informar como resolver este problemão?

 

Um abraço,

<{POST_SNAPBACK}>

Posta o codigo que eu tento responder!

talves tenha que trocar o name ou value, mas posta ai que eu tento te ajudar!

Até+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o codigo que eu tento responder!talves tenha que trocar o name ou value, mas posta ai que eu tento te ajudar!Até+

Lá vai meu código.. ao invés de chamar um php, o ajax chama uma procedure de uma package (pl/sql) - monta menucidadeotimizado.
<script>        function ajaxInit()        {           var req;           try           {              alert("Microsoft");              req = new ActiveXObject("Microsoft.XMLHTTP");           }           catch(e)           {              try              {                 alert("Msxml2");                 req = new ActiveXObject("Msxml2.XMLHTTP");              }              catch(ex)              {                 try                 {                    alert("XMLHttpRequest");                    req = new XMLHttpRequest();                 }                 catch(exc)                 {                    req = null;                    alert("Seu browser nao tem suporte ao Ajax");                 }              }           }           return req;        }                function monta(obj)        {           alert("entrou");           valIni = obj.value;           alert(valIni);           ajax = ajaxInit();           alert("criou ajax");           if (ajax)           {              //ajax.open("GET", "scriptAjax.php?n=" + valIni, true);              ajax.open("POST","Teste_Reload.montamenucidadeotimizado",true);              //ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");              ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");                            alert("antes da function");              ajax.onreadystatechange = function()              {                 if ((ajax.readyState == 4) && (ajax.status == 200))                 {                    alert("entrou aqui");                    document.getElementById("news").innerHTML = ajax.responseText;                 }                 else                 {                    alert(ajax.statusText);                 }              }              ajax.send("p_ufcod=" + valIni);           }        }        </script>');
Parte do html principal é: (quando o usuário efetua o onchange na UF), o ajax deve substituir o que está interno à este DIV):

  htp.print('<div id="news">');    htp.print('<table>');    Htp.print('<TR>');    Htp.print('<TD align="right" width="150"><B> Cidade: </B></TD>');    Htp.print('<TD align="left" width="150"><SELECT name="p_cidade">');    Htp.print('<OPTION value="0"> ---------------- </OPTION>');              Htp.print('</select></td></tr></table>');    htp.print('</div>');

O montamenuotimizado: Basicamente, monta uma tabela com 1 linha e 2 colunas apenas e, percorrendo um cursor, monta o select colocando o nome de cidades.O mais estranho é que a acentuação funciona normalmente no Netscape 7.02 (pt-br), mas não no netcape 7.2 (inglês) nem no IE, mozila.. etc.Espero que alguém possa me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos!

 

Sou nonato aqui no fórum e também em PHP.

Sei que o tópico é antigo, mas a para não criar outro com o mesmo assunto, resolvi postar aqui mesmo, qualquer coisa, desculpem-me.

 

É o seguinte, tenho no meu site o código da citação abaixo, no qual podem enviar mensagens para meu e-mail. Todavia, eu queria que o campo e-mail fosse obrigatório.

 

Tentei algumas dicas que encontrei aqui, porém aparece o aviso de "campo email necessário" e a mensagem é enviada do mesmo jeito, sem o email.

 

<?

$hoje_tmp = getdate();

$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);

 

$nome = $_POST["nome"]; //trata a variável nome

$cidade = $_POST["bairro"]; //trata a variável bairro

$email = $_POST["e-mail"]; //trata a variável e-mail

$assunto_mensagem = $_POST["assunto_mensagem"]; //trata a variável assunto

$mensagem = $_POST["mensagem"]; //trata a variável mensagem

 

global $email; //transforma em variavel global a variável e-mail

 

$enviou = mail("seuemail@site.com", // aqui voce coloca o seu e-mail

"$assunto_mensagem",

"Nome: $nome

Bairro: $bairro

E-mail: $email

Assunto: $assunto_mensagem

Mensagem: $mensagem",

"From: $email <$nome>");

 

if ($enviou){

echo "<b>$nome</b>,<br><br>Sua mensagem foi enviada com sucesso.<br><br>Em breve lhe responderemos.";

}

 

else {

echo "<b>$nome</b>,<br><br>Não foi possível enviar sua mensagem.<br><br>Tente novamente.";

 

}

?>

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O interessante seria criar um novo tópico, mas sem problemas.

 

Seguinte, não li o tópico, mas com certeza fala para verificar se o conteúdo que é recebido na variável está vazio, ou não. Eu uso a função empty() para tal.

 

Dá uma olhada:

 

$nome = strip_tags(trim($_POST['nome']));

if(empty($nome)){
   // se a variável nome está vazia...
}

Veja que usei o strip_tags(), que tenta retirar todas as tags HTML e PHP da string passada pelo parâmetro, e trim(), que retira os espaços à esquerda e/ou à direita.

 

:thumbsup:

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.