G.Soares 0 Denunciar post Postado Outubro 14, 2009 Galera, tenho um formulário e nele as pessoas conseguem enviar o formulário deixando campos vazios. O que posso fazer pra evitar isso? Queria assim. Ao invés de aparecer a mensagem "Mensagem enviada com sucesso!" e enviasse, queria que não enviasse e aparecesse "Certifique-se que todos os campos foram preenchidos corretamente e tente novamente."! <form action="index.php?p=contato_enviado" method="post" name="form_contato" id="form_contato"> <p><input name="nome" type="text" class="conteúdo" id="nome" value="Nome" size="25" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Nome';"></p> <p><input name="email" type="text" class="conteúdo" id="email" value="Email" size="25" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Email';"></p> <p><input name="ddd" type="text" class="conteúdo" id="ddd" value="DDD" size="6" maxlength="3" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'DDD';"> <input name="telefone" type="text" class="conteúdo" id="telefone" value="Telefone" size="15" maxlength="8" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Telefone';"></p> <p><input name="cidade" type="text" class="conteúdo" id="cidade" value="Cidade" size="30" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Cidade';"> <input name="estado" type="text" class="conteúdo" id="estado" value="UF" size="4" maxlength="2" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'UF';"></p> <p><input name="assunto" type="text" class="conteúdo" id="assunto" value="Assunto" size="30" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Assunto';"></p> <p><textarea name="mensagem" cols="30" rows="6" class="conteúdo" id="mensagem" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Mensagem';">Mensagem</textarea></p> <p><input type="submit" name="Submit" value="Enviar"><input type="reset" name="Submit2" value="Limpar"></p> </form> <?php $mensagem = "Nome: ".$_POST['nome']." \n"; $mensagem .= "Email: ".$_POST['email']." \n"; $mensagem .= "DDD: ".$_POST['ddd']." \n"; $mensagem .= "Telefone: ".$_POST['telefone']." \n"; $mensagem .= "Cidade: ".$_POST['cidade']." \n"; $mensagem .= "UF: ".$_POST['uf']." \n"; $mensagem .= "Assunto: ".$_POST['assunto']." \n"; $mensagem .= "Mensagem:". $_POST['mensagem']; if ($mensagem == NULL) //isso não funciona mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); echo "<meta http-equiv='refresh' content='2;URL=index.php'>"; ?> Mensagem envisda com sucesso! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Utilize a função empty para testar se está vazio. http://br.php.net/empty Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
G.Soares 0 Denunciar post Postado Outubro 14, 2009 Continuei recebendo do mesmo jeito. Veja como ficou: <?php $mensagem = "Nome: ".$_POST['nome']." \n"; $mensagem .= "Email: ".$_POST['email']." \n"; $mensagem .= "DDD: ".$_POST['ddd']." \n"; $mensagem .= "Telefone: ".$_POST['telefone']." \n"; $mensagem .= "Cidade: ".$_POST['cidade']." \n"; $mensagem .= "UF: ".$_POST['uf']." \n"; $mensagem .= "Assunto: ".$_POST['assunto']." \n"; $mensagem .= "Mensagem:". $_POST['mensagem']; if (empty($mensagem)) { echo 'Certifique-se de que todos os campos foram preenchidos e tente novamente!'; } mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); echo "<meta http-equiv='refresh' content='2;URL=index.php'>"; ?> Mensagem envisda com sucesso! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 $mensagem nunca vai ser vazia porque você está colocando valores nela. Você tem que testar cada uma das $_POST['nome']. Um exemplo. <?php $erro = ''; $mensagem = ''; // faça a mesma coisa para todas as variáveis. if(empty($_POST['nome'])) { $erro .= '- Nome<br/>'; } else { $mensagem .= 'Nome: '.$_POST['nome'].' \n'; } $mensagem .= "Email: ".$_POST['email']." \n"; $mensagem .= "DDD: ".$_POST['ddd']." \n"; $mensagem .= "Telefone: ".$_POST['telefone']." \n"; $mensagem .= "Cidade: ".$_POST['cidade']." \n"; $mensagem .= "UF: ".$_POST['uf']." \n"; $mensagem .= "Assunto: ".$_POST['assunto']." \n"; $mensagem .= "Mensagem:". $_POST['mensagem']; if (empty($erro)) { echo 'Os campos abaixo não foram preenchidos<br/>'.$erro; } else { mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); echo '<meta http-equiv="refresh" content="2;URL=index.php">'; echo 'Mensagem enviada com sucesso!'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
G.Soares 0 Denunciar post Postado Outubro 14, 2009 Eu recebi do mesmo jeito, com todos os campos vazios. Veja os erros: <?php $erro = ''; $mensagem = ''; if(empty($_POST['nome'])) { $erro .= '- Nome'; } else { $mensagem = "Nome: ".$_POST['nome']." \n"; } if(empty($_POST['email'])) { $erro .= '- Email'; } else { $mensagem .= "Email: ".$_POST['email']." \n"; } $mensagem .= "IP: ".$_SERVER['REMOTE_ADDR']." \n"; if(empty($_POST['ddd'])) { $erro .= '- DDD'; } else { $mensagem .= "DDD: ".$_POST['ddd']." \n"; } if(empty($_POST['telefone'])) { $erro .= '- Telefone'; } else { $mensagem .= "Telefone: ".$_POST['telefone']." \n"; } if(empty($_POST['cidade'])) { $erro .= '- Cidade'; } else { $mensagem .= "Cidade: ".$_POST['cidade']." \n"; } if(empty($_POST['uf'])) { $erro .= '- UF'; } else { $mensagem .= "UF: ".$_POST['uf']." \n"; } if(empty($_POST['assunto'])) { $erro .= '- Assunto'; } else { $mensagem .= "Assunto: ".$_POST['assunto']." \n"; } if(empty($_POST['mensagem'])) { $erro .= '- Mensagem'; } else { $mensagem .= "Mensagem:". $_POST['mensagem']; } if (empty($erro)) { echo 'Os campos abaixo não foram preenchidos<br/>'.$erro; } else { mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); echo "<meta http-equiv='refresh' content='2;URL=index.php'>"; echo "Mensagem enviada com sucesso!"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Dperotto 0 Denunciar post Postado Outubro 14, 2009 Caro G.Soares, porque tu não faz uma função javaScript que valide os campos? <script> function pegaEsse(id){ if(document.getElementById(id)){ return document.getElementById(id).value; } else { return false; } } function enviaForm () { var erro = "Os seguintes erros foram encontrados"; if(!pegaEsse('nome')){ erro += "campo nome está vazio\n"; } if(!pegaEsse('nome')){ erro += "campo nome está vazio\n"; } if(!pegaEsse('email')){ erro += "campo email está vazio\n"; } if(!pegaEsse('ddd')){ erro += "campo ddd está vazio\n"; } /* [...] segu fazendo para todos os campo */ if(erro == "Os seguintes erros foram encontrados"){ document.form.submit(); } else { alert(erro); } } </script> e no botão de submit tu coloca o evento onclick='enviaForm();' e muda pra type='button' algo do tipo <input type="button" onclick='enviaForm();' value="Enviar"> Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Mal meu... coloquei a validação lá embaixo invertido. // aqui coloquei um operador de negação (!) // isto significa dizer que se $erro NÃO for vazio if (!empty($erro)) { echo 'Os campos abaixo não foram preenchidos<br/>'.$erro; } else { mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); echo "<meta http-equiv='refresh' content='2;URL=index.php'>"; echo "Mensagem enviada com sucesso!"; } Deve funcionar. Caro G.Soares, porque tu não faz uma função javascript que valide os campos? Se quiser fazer a validação em Javascript, faça, mas não deixe de fazer em PHP também, pois o usuário pode estar navegando com o Javascript desabilitado. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
G.Soares 0 Denunciar post Postado Outubro 14, 2009 Como disse o Matias, não dá pra fazer a verificação em JS, até mesmo porque eu navego às vezes com ele desativado. Pois bem, Matias, não entendi como fica. Poderia modificar o código pra mim? *modo iniciante pra dedéu on* Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 14, 2009 Ali em cima já modifiquei. Apenas adicionei o operador de negação (!) antes do empty. Eu tinha colocado a lógica ao contrário, ou seja, quando não tivesse nenhuma mensagem (ou seja, tudo correto) ele iria exibir o erro. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
G.Soares 0 Denunciar post Postado Outubro 14, 2009 Cara, nunca imaginei que um ponto de exclamação iria fazer tanta diferença! Muito obrigado Matias! Solveeed! Compartilhar este post Link para o post Compartilhar em outros sites