Apenas Eu 13 Denunciar post Postado Novembro 7, 2014 Olá! Minha intensão era tentar resolver esse problema sozinho visto que esse foi o primeiro programa PHP que usei. Mas eu tentei incluir ele no meu sistema novo de cadastro. Pois bem eu tentei usar o programa de email automatico que normalmente uso em meu site e coloquei no sistema de cadastro para que o usuario receba a confirmação que ele foi cadastrado. Eu tentei adaptar, mas ainda não estou achando o problema. Acho que é algo bem simples.cadastro: <?php // inclui o arquivo de configuração do sistema include "Config/config_sistema.php"; // recebe dados do formulario $senha = $_POST['senha']; $rep_senha = $_POST['rep_senha']; $nome = htmlspecialchars($_POST['nome']); $login = htmlspecialchars($_POST['login']); $telefone = $_POST['telefone']; $celular = $_POST['celular']; $---o = $_POST['---o']; $dia = $_POST['dia']; $mes = $_POST['mes']; $ano = $_POST['ano']; $endereco = $_POST['endereco']; $numero = $_POST['numero']; $bairro = $_POST['bairro']; $estado = $_POST['estado']; $cidade = $_POST['cidade']; $cep = $_POST['cep']; $pergunta = htmlspecialchars($_POST['pergunta']); $resposta = htmlspecialchars($_POST['resposta']); // verifica se o usuario digitou o login if($login == "") { echo "Digite seu login!"; exit; } else { // se o usuario digitou o login ele verifica // se esta disponivel $consulta = mysql_query("select * from dados_usuarios where Login = '$login'"); $linha = mysql_num_rows($consulta); if($linha != 0) { echo "Este e-mail já está cadastrado em nosso sistema!<br> Se houver dúvidas entre em contato com nosso suporte"; exit; } } // verifica se o usuario digitou a senha if($senha == "") { echo "Digite sua senha!"; exit; } else { // se o usuario digitou a senha // vamos comparar com a contra senha if($senha != $rep_senha) { echo "Senha invalida!"; exit; } } // verifica se o usuario digitou o nome if($nome == "") { echo "Digite seu nome!"; exit; } // verifica o ---o $arr_---o = array('Masculino','Feminino'); if(!in_array($---o,$arr_---o)) { echo "Escolha o seu ---o!"; exit; } // verifica a data de nascimento do usuario // verifica o dia if($dia == "") { echo "Escolha o dia que você nasceu!"; exit; } else { // verifica o mes if($mes == "") { echo "Escolha o mês que você nasceu!"; exit; } else { // verifica o ano if($ano == "") { echo "Escolha o ano que você nasceu!"; exit; } else { // se o Dia, o Mês e o Ano passaram // vamos juntalos numa so varivel $data_nasc = $dia."/".$mes."/".$ano; } } } // verifica o estado if($estado == "") { echo "Digite o estado onde você mora!"; exit; } // verifica a cidade if($cidade == "") { echo "Digite a cidade onde você mora!"; exit; } // verifica o cep if($cep == "") { echo "Digite o CEP de onde você mora!"; exit; } // verifica a pergunta secreta if($pergunta == "") { echo "Digite sua pergunta secreta!"; exit; } // verifica a resposta secreta if($resposta == "") { echo "Digite sua resposta secreta!"; exit; } // faz consulta no banco para inserir os dados do usuario $sql = "insert into dados_usuarios (ID,Senha,Nome,Login,telefone,celular,---o,DataNasc,endereco,numero,bairro,Estado,Cidade,Cep,Pergunta,Resposta) values ('','$senha','$nome','$login','$telefone','$celular','$---o','$data_nasc','$endereco','$numero','$bairro','$estado','$cidade','$cep','$pergunta','$resposta')"; $consulta = mysql_query($sql); // verifica se o usuario foi cadastrado if($consulta) { echo "<font color=green><b> Você foi cadastrado com sucesso!<br> Click <a href=index.php>aqui</a> para efetuar o login. </font></b>"; exit; } else { echo "Não foi possivel efetuar o seu cadastro<br> tente mais tarde pode ser um problema no servido!<br> Click <a href=login.php>aqui</a> para ir ate a home page do sistema."; exit; } >? do email <?php $nome = $_POST['nome']; $email=$_POST["email"]; $empresa=$_POST["empresa"]; $cep=$_POST["cep"]; $telefone=$_POST["telefone"]; $cidade=$_POST["cidade"]; $estados=$_POST["estados"]; // Verifica se O Campo nome tá preenchido if($nome=="") { echo"<script>alert('o campo NOME nao pode ficar em branco');window.history.go(-1);</script>"; exit; } //aqui verifica se o campo e-mail esta vazio ou não , se estiver manda mensagem de erro dentro do parenteses if($email=="") { echo"<script>alert('Para que possamos entrar em contato com voce, o campo e-mail nao pode ficar em branco');window.history.go(-1);</script>"; exit; } //aqui verifica se o campo do e-mail foi preenchido com um e-mail de verdade if(strlen($email)<8 || substr_count($email, "@")!=1 || substr_count($email, ".")==0) { echo"<script>alert('Por favor, volte e verifique se o e-mail foi digitado.');window.history.go(-1);</script>"; exit; } //aqui recebe o assunto da mensagem $assunto=$_POST["assunto"]; //aqu a mensagem escrita $messagem=$_POST["mensagem"]; //aqui o IP do computador de quem manda $ip=$_SERVER['REMOTE_ADDR']; //aqui os dados para os destinatário do formulari no caso seu sei //nome do site $site="DCS Desenvolvimento"; //email do site $emaildosite="danilo@dcsdesenvolvimento.com.br"; //aqui o corpo da mensagem para exibição no corpo do e-mail $m=" <html> <body> <b>Nome:</b> $nome<br> <b>E-mail:</b> $email<br> <b>Empresa:</b> $empresa<br> <b>Fone:</b> $telefone<br> <b>Cidade:</b> $cidade<br> <b>Estado:</b> $estados<br> <b>Assunto:</b> $assunto<br> <b>Mensagem:</b> $messagem<br> <b>IP:</b> $ip </body> </html> "; //aqui o envio do e-mail para o webmaster $mensa = "$m\n"; $headersa = "From: \"$nome\" <$email>\r\n"; $headersa .= "Content-type: text/html; "; //aqui o e-mail automático para quem escreveu mail($site . '<' . $emaildosite . '>'," $site - Assunto: $assunto",$mensa,$headersa); //mensagem para quem escreveu $informacoes2="Olá, $nome! </br> Recebemos sua solicitação e assim que possível iremos responder. </br> Obrigado :) "; $mens = "$informacoes2\n"; $headers = "From: \"$site\" <$emaildosite>\r\n"; $headers .= "Content-type: text/html"; mail($nome . '<' . $email . '>',"$site - Confirmando que recebemos seu e-mail...",$mens,$headers); echo"<html><meta http-equiv=refresh content=0;URL=confirmacao.php></html>"; ?> Bom o do email eu coloquei o original. Unica coisa que achei que tinha que fazer, era, trocar ali o $email por $login visto que novo sistema é este campo que recebe o email do cadastrado. Portanto, eu fiz assim: <?php // inclui o arquivo de configuração do sistema include "Config/config_sistema.php"; // recebe dados do formulario $senha = $_POST['senha']; $rep_senha = $_POST['rep_senha']; $nome = htmlspecialchars($_POST['nome']); $login = htmlspecialchars($_POST['login']); $telefone = $_POST['telefone']; $celular = $_POST['celular']; $---o = $_POST['---o']; $dia = $_POST['dia']; $mes = $_POST['mes']; $ano = $_POST['ano']; $endereco = $_POST['endereco']; $numero = $_POST['numero']; $bairro = $_POST['bairro']; $estado = $_POST['estado']; $cidade = $_POST['cidade']; $cep = $_POST['cep']; $pergunta = htmlspecialchars($_POST['pergunta']); $resposta = htmlspecialchars($_POST['resposta']); // verifica se o usuario digitou o login if($login == "") { echo "Digite seu login!"; exit; } else { // se o usuario digitou o login ele verifica // se esta disponivel $consulta = mysql_query("select * from dados_usuarios where Login = '$login'"); $linha = mysql_num_rows($consulta); if($linha != 0) { echo "Este e-mail já está cadastrado em nosso sistema!<br> Se houver dúvidas entre em contato com nosso suporte"; exit; } } // verifica se o usuario digitou a senha if($senha == "") { echo "Digite sua senha!"; exit; } else { // se o usuario digitou a senha // vamos comparar com a contra senha if($senha != $rep_senha) { echo "Senha invalida!"; exit; } } // verifica se o usuario digitou o nome if($nome == "") { echo "Digite seu nome!"; exit; } // verifica o ---o $arr_---o = array('Masculino','Feminino'); if(!in_array($---o,$arr_---o)) { echo "Escolha o seu ---o!"; exit; } // verifica a data de nascimento do usuario // verifica o dia if($dia == "") { echo "Escolha o dia que você nasceu!"; exit; } else { // verifica o mes if($mes == "") { echo "Escolha o mês que você nasceu!"; exit; } else { // verifica o ano if($ano == "") { echo "Escolha o ano que você nasceu!"; exit; } else { // se o Dia, o Mês e o Ano passaram // vamos juntalos numa so varivel $data_nasc = $dia."/".$mes."/".$ano; } } } // verifica o estado if($estado == "") { echo "Digite o estado onde você mora!"; exit; } // verifica a cidade if($cidade == "") { echo "Digite a cidade onde você mora!"; exit; } // verifica o cep if($cep == "") { echo "Digite o CEP de onde você mora!"; exit; } // verifica a pergunta secreta if($pergunta == "") { echo "Digite sua pergunta secreta!"; exit; } // verifica a resposta secreta if($resposta == "") { echo "Digite sua resposta secreta!"; exit; } // faz consulta no banco para inserir os dados do usuario $sql = "insert into dados_usuarios (ID,Senha,Nome,Login,telefone,celular,---o,DataNasc,endereco,numero,bairro,Estado,Cidade,Cep,Pergunta,Resposta) values ('','$senha','$nome','$login','$telefone','$celular','$---o','$data_nasc','$endereco','$numero','$bairro','$estado','$cidade','$cep','$pergunta','$resposta')"; $consulta = mysql_query($sql); // verifica se o usuario foi cadastrado if($consulta) { echo "<font color=green><b> Você foi cadastrado com sucesso!<br> Click <a href=index.php>aqui</a> para efetuar o login. </font></b>"; exit; } else { echo "Não foi possivel efetuar o seu cadastro<br> tente mais tarde pode ser um problema no servido!<br> Click <a href=login.php>aqui</a> para ir ate a home page do sistema."; exit; } //aqui recebe o assunto da mensagem $assunto=$_POST["assunto"]; //aqu a mensagem escrita $messagem=$_POST["mensagem"]; //aqui o IP do computador de quem manda $ip=$_SERVER['REMOTE_ADDR']; //aqui os dados para os destinatário do formulari no caso seu sei //nome do site $site="DCS Desenvolvimento"; //email do site $emaildosite="danilo@dcsdesenvolvimento.com.br"; //aqui o corpo da mensagem para exibição no corpo do e-mail $m=" <html> <body> <b>Nome:</b> $nome<br> <b>E-mail:</b> $login<br> <b>Empresa:</b> $empresa<br> <b>Fone:</b> $telefone<br> <b>Cidade:</b> $cidade<br> <b>Estado:</b> $estados<br> <b>Assunto:</b> $assunto<br> <b>Mensagem:</b> $messagem<br> <b>IP:</b> $ip </body> </html> "; //aqui o envio do e-mail para o webmaster $mensa = "$m\n"; $headersa = "From: \"$nome\" <$login>\r\n"; $headersa .= "Content-type: text/html; "; //aqui o e-mail automático para quem escreveu mail($site . '<' . $emaildosite . '>'," $site - Assunto: $assunto",$mensa,$headersa); //mensagem para quem escreveu $informacoes2="Olá, $nome! </br> Recebemos sua solicitação e assim que possível iremos responder. </br> Obrigado :) "; $mens = "$informacoes2\n"; $headers = "From: \"$site\" <$emaildosite>\r\n"; $headers .= "Content-type: text/html"; mail($nome . '<' . $login . '>',"$site - Confirmando que recebemos seu e-mail...",$mens,$headers); echo"<html><meta http-equiv=refresh content=0;URL=confirmacao.php></html>"; ?> Onde será que está meu erro? =\ Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 7, 2014 Qual erro o PHP está exibindo? Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 7, 2014 No caso o erro é que não está sendo enviado o email.... Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 7, 2014 Mas o php está exibindo algo? Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 7, 2014 Não... Não aparece nenhuma mensagem de erro e o cadastro é recebido pelo banco de dados normalmente.... Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 8, 2014 Execute novamente, habilitando todas as mensagens de erro, como descrito neste post: http://forum.imasters.com.br/topic/375800-orientaes-para-uma-boa-participao/ veja se aparece algum erro Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 8, 2014 Eu adicionei no inicio do cód: <?php ini_set( 'display_errors', true ); error_reporting( E_ALL ); Não apareceu nada de mais. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 8, 2014 Após o INSERT (que você disse que funciona corretamente) você só exibe uma mensagem de sucesso e um link para fazer login. Em que momento esse script de envio de email é processado? Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 8, 2014 Ah... Eu imagino que seja após o envio dos dados para o formulario... Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 8, 2014 Imagina? :unsure: Você que fez esse código? Onde colocou o trecho de envio de emails? Está em outro arquivo ou no mesmo do insert? Estou confuso... :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 8, 2014 Hehehehe! Eu preciso muito estudar a lógica da programação, Eu apenas consigo só fazer o que vejo, daí eu não consigo explicar direito,,, Na realidade eu não fiz, ambos peguei prontos. Eu sei editar eles apenas :) . Ah mas qualquer coisa deixa para lá... O que eu tentei fazer nele foi incluir o cod. de envio de email de outro formulario para este programa de cadastro (para este ultimo cod. que postei), daí eu coloquei após a parte que "verifica se o usuario foi cadastrado", seria a partir da linha 162. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 8, 2014 Você pode deixar o trecho de envio de email em outro arquivo, desde que você dê um include/require nele dentro deste if: if($consulta) { echo "<font color=green><b> Você foi cadastrado com sucesso!<br> Click <a href=index.php>aqui</a> para efetuar o login. </font></b>"; require "enviar_emai.php"; exit; // ... restante do código A diferença é que você usará as variáveis já criadas logo abaixo do comentário //recebe dados do formulario, onde você busca os valores do formulário. Ou seja, não é necessário pegar essas variáveis de novo no arquivo envia_email.php Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 8, 2014 Eu vou tentar. Muito obrigado.... Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 11, 2014 Rapaiz eu ainda não pude testar a sua dica, mas eu estava pensando aqui:Será que o problema de não enviar o email, é porque ainda estou usando um localhost e não enviei ainda o sistema para a web? Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Novembro 11, 2014 A função mail() do PHP em localhost não irá funcionar mesmo. Os servidores externos rejeitam cabeçalhos com localhost e cabeçalhos não formatados corretamente. Tente usar SMTP. Te indico de começo o PHPMailer. Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 11, 2014 Pode ser isso mesmo então né? Eu me matando aqui e fazendo o pessoal quebrar a cabeça. Eu lembrei desse detalhe por acaso ontem. Eu uso o Xampps Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 15, 2014 Olá! Eu consegui entender o motivo no meu cód não funcionar para o envio de email neste caso. Neste cód. o sistema faz uma consulta se o cadastro foi feito e depois direciona a uma página com o aviso que o cadastro foi realizado. Depois disso eu implementei a função mail(). Eu simplesmente fiz isso: //aqui recebe o assunto da mensagem $assunto=$_POST["assunto"]; //aqu a mensagem escrita $messagem=$_POST["mensagem"]; //aqui o IP do computador de quem manda $ip=$_SERVER['REMOTE_ADDR']; //aqui os dados para os destinatário do formulari no caso seu sei //nome do site $site="DCS Desenvolvimento"; //email do site $emaildosite="danilo@dcsdesenvolvimento.com.br"; //aqui o corpo da mensagem para exibição no corpo do e-mail $m=" MENSAGEM "; //aqui o envio do e-mail para o webmaster $mensa = "$m\n"; $headersa = "From: \"$nome\" <$login>\r\n"; $headersa .= "Content-type: text/html; "; //aqui o e-mail automático para quem escreveu mail($site . '<' . $emaildosite . '>'," $site - Assunto: $assunto",$mensa,$headersa); //mensagem para quem escreveu $informacoes2="Olá, $nome! </br> Recebemos sua solicitação e assim que possível iremos responder. </br> Obrigado :) "; $mens = "$informacoes2\n"; $headers = "From: \"$site\" <$emaildosite>\r\n"; $headers .= "Content-type: text/html"; mail($nome . '<' . $login . '>',"$site - Confirmando que recebemos seu e-mail...",$mens,$headers); echo"<html><meta http-equiv=refresh content=0;URL=confirmacao.php></html>"; // verifica se o usuario foi cadastrado if($consulta) { echo "<font color=green><b> Você foi cadastrado com sucesso!<br> Click <a href=index.php>aqui</a> para efetuar o login. </font></b>"; exit; } else { echo "Não foi possivel efetuar o seu cadastro<br> tente mais tarde pode ser um problema no servido!<br> Click <a href=login.php>aqui</a> para ir ate a home page do sistema."; exit; } Mas no caso eu usei um outro cód mais simples que refiz por base em um livro sobre php :) Valeuuu por todos Compartilhar este post Link para o post Compartilhar em outros sites