Paulo Peres Postado Março 19, 2021 Denunciar Share Postado Março 19, 2021 Olá sou novo no fórum. Assim como também com programação. Estou descobrindo o PHP e como voce sabe, no começo a gente patina um pouco. Tenho um form de contato numa pagina html que não envia nem a pau a mensagem para o email do destinatario. não entendo o que está faltando. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Peres Postado Março 19, 2021 Autor Denunciar Share Postado Março 19, 2021 esse é código PHP que estou usando: <?php // EDIT THE 2 LINES BELOW AS REQUIRED $send_email_to = "atendimento@optionmaker.com.br"; $email_subject = "Contato Site Mobile"; function send_email($name,$email,$email_message) { global $send_email_to; global $email_subject; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= "From: ".$email. "\r\n"; $message = "<strong>Email = </strong>".$email."<br>"; $message .= "<strong>Name = </strong>".$name."<br>"; $message .= "<strong>Message = </strong>".$email_message."<br>"; @mail($send_email_to, $email_subject, $message,$headers); return true; } function validate($name,$email,$message) { $return_array = array(); $return_array['success'] = '1'; $return_array['name_msg'] = ''; $return_array['email_msg'] = ''; $return_array['message_msg'] = ''; if($email == '') { $return_array['success'] = '0'; $return_array['email_msg'] = 'email is required'; } else { $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email)) { $return_array['success'] = '0'; $return_array['email_msg'] = 'enter valid email.'; } } if($name == '') { $return_array['success'] = '0'; $return_array['name_msg'] = 'name is required'; } else { $string_exp = "/^[A-Za-z .'-]+$/"; if (!preg_match($string_exp, $name)) { $return_array['success'] = '0'; $return_array['name_msg'] = 'enter valid name.'; } } if($message == '') { $return_array['success'] = '0'; $return_array['message_msg'] = 'message is required'; } else { if (strlen($message) < 2) { $return_array['success'] = '0'; $return_array['message_msg'] = 'enter valid message.'; } } return $return_array; } $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $return_array = validate($name,$email,$message); if($return_array['success'] == '1') { send_email($name,$email,$message); } header('Content-type: text/json'); echo json_encode($return_array); die(); ?> Este é o código HTML que estou usando: <form method="post" action="send_form_email.php" id="contactform"> <div> <label for="name">Nome</label> <input type="text" class="input-field" id="name" name="name" value=""> </div> <div> <label for="email">E-mail</label> <input type="text" class="input-field" id="email" name="email" value=""> </div> <div> <label>Mensagem</label> <textarea id="message" name="message"></textarea> </div> <a id="button-send" href="#" title="Send Email" class="button" style="width:100%;">Enviar</a> <div id="success">Mensagem enviada com sucesso!</div> <div id="error">Ops! Algo deu errado. Use o atendimento@optionmaker.com.br</div> </form> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hera Araújo Postado Março 22, 2021 Denunciar Share Postado Março 22, 2021 Estou dando uma olhada...aguarda até final do dia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Peres Postado Março 22, 2021 Autor Denunciar Share Postado Março 22, 2021 23 minutos atrás, Hera Araújo disse: Estou dando uma olhada...aguarda até final do dia? opa ! valeu Hera Araújo, obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hera Araújo Postado Março 22, 2021 Denunciar Share Postado Março 22, 2021 Bom, Resolvi dar uma corrigida geral no teu código, pois tem casos que é melhor refazer tudo sob o risco de dificultar a compreenção da aula. 1) Simplifiquei todo código e deixe-o todo num só arquivo ".php"(é só copiar, colar e executar no teu servidor); 2) Além de melhorar o teu HTML, escrevi o código mostrando como se deve usar o PHP combinado com as requisições POST(ou GET) no HTML, senão, ficaria difícil pra você. 3) Deixei a função de Email sem crítica e usei um usuário(o que envia) externo " só para o exemplo:webmaster@example.com; 4) Perceba que a variável invisível "passouUmaVez" é fundamental para o truque PHP/HTML que faz exibir o form pela primeira vez sem processar nada; aqui vai o código(bom proveito na compreenção): >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $passouUmaVez = $_POST['passouUmaVez']; // EDIT THE 2 LINES BELOW AS REQUIRED $send_email_to = "atendimento@optionmaker.com.br"; $email_subject = "Contato Site Mobile"; if ( $passouUmaVez == 1 ) { $indicadorErro = false; if ( empty($name) ) { echo "<p>Falta informar título(ou nome do título) </p>"; $indicadorErro=true; } if ( empty($email) ) { echo "<p>Falta informar Email</p>"; $indicadorErro=true; } if ( empty($message) ) { echo "<p>Falta informar Mensagem</p>"; $indicadorErro=true; } if ( !$indicadorErro ) { $to = $email; $subject = $name; $message = $message; $headers = 'From: webmaster@example.com'."\r\n".'Reply-To: webmaster@example.com'."\r\n".'X-Mailer: PHP/' . phpversion(); $success = mail($to, $subject, $message, $headers); echo "<p>Tentativa de enviar Email com sucesso!</p>"; //limpando campos $name = ""; $email = ""; $message = ""; } } ?> <form method="post" action="send_form_email.php" id="contactform"> <div><b>Nome:</b></div> <div><input type="text" class="input-field" id="name" name="name" value="<?php echo $name ?>"> </div> <div><b>E-mail:</b></div> <div><input type="text" class="input-field" id="email" name="email" value="<?php echo $email ?>"></div> <div><b>Messagem:</b></div><div> <div><textarea id="message" rows="5" cols="70" name="message"><?php echo $message ?></textarea></div> <input type="hidden" name="passouUmaVez" value="1"> <!--variavel invisivel(só para não deixar executar logo na entrada do form --> <br><br> <input type="submit" > </form> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> depois, num outro fórum, você pode pedir ajuda para aprimorar a função que veririca se o Email foi mesmo enviado com sucesso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Peres Postado Março 22, 2021 Autor Denunciar Share Postado Março 22, 2021 12 minutos atrás, Hera Araújo disse: Oi Hera Araújo, agradeço por sua atenção e seu tempo. Ok, vou estudar e testar e te dou um feedback. Muito obrigado. att Paulo Resolvi dar uma corrigida geral no teu código, pois tem casos que é melhor refazer tudo sob o risco de dificultar a compreenção da aula. 1) Simplifiquei todo código e deixe-o todo num só arquivo ".php"(é só copiar, colar e executar no teu servidor); 2) Além de melhorar o teu HTML, escrevi o código mostrando como se deve usar o PHP combinado com as requisições POST(ou GET) no HTML, senão, ficaria difícil pra você. 3) Deixei a função de Email sem crítica e usei um usuário(o que envia) externo " só para o exemplo:webmaster@example.com; 4) Perceba que a variável invisível "passouUmaVez" é fundamental para o truque PHP/HTML que faz exibir o form pela primeira vez sem processar nada; aqui vai o código(bom proveito na compreenção): >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $passouUmaVez = $_POST['passouUmaVez']; // EDIT THE 2 LINES BELOW AS REQUIRED $send_email_to = "atendimento@optionmaker.com.br"; $email_subject = "Contato Site Mobile"; if ( $passouUmaVez == 1 ) { $indicadorErro = false; if ( empty($name) ) { echo "<p>Falta informar título(ou nome do título) </p>"; $indicadorErro=true; } if ( empty($email) ) { echo "<p>Falta informar Email</p>"; $indicadorErro=true; } if ( empty($message) ) { echo "<p>Falta informar Mensagem</p>"; $indicadorErro=true; } if ( !$indicadorErro ) { $to = $email; $subject = $name; $message = $message; $headers = 'From: webmaster@example.com'."\r\n".'Reply-To: webmaster@example.com'."\r\n".'X-Mailer: PHP/' . phpversion(); $success = mail($to, $subject, $message, $headers); echo "<p>Tentativa de enviar Email com sucesso!</p>"; //limpando campos $name = ""; $email = ""; $message = ""; } } ?> <form method="post" action="send_form_email.php" id="contactform"> <div><b>Nome:</b></div> <div><input type="text" class="input-field" id="name" name="name" value="<?php echo $name ?>"> </div> <div><b>E-mail:</b></div> <div><input type="text" class="input-field" id="email" name="email" value="<?php echo $email ?>"></div> <div><b>Messagem:</b></div><div> <div><textarea id="message" rows="5" cols="70" name="message"><?php echo $message ?></textarea></div> <input type="hidden" name="passouUmaVez" value="1"> <!--variavel invisivel(só para não deixar executar logo na entrada do form --> <br><br> <input type="submit" > </form> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Oi, depois, num outro fórum, você pode pedir ajuda para aprimorar a função que veririca se o Email foi mesmo enviado com sucesso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hera Araújo Postado Março 22, 2021 Denunciar Share Postado Março 22, 2021 Eita, já ia esquecendo, o nome do arquivo .php dev ser "send_form_email.php" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Peres Postado Março 23, 2021 Autor Denunciar Share Postado Março 23, 2021 20 horas atrás, Hera Araújo disse: Eita, já ia esquecendo, o nome do arquivo .php dev ser "send_form_email.php" Oi Hera Araujo, bom dia. Fiz os testes e achei interessante... o que envia a mensagem do form é o emal que informamos no php, e então a mensagem do form vem com um anexo. achei interessante também que no form html dentro dos campos fica visível o código. olha as imagens que voce vai entender. <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $passouUmaVez = $_POST['passouUmaVez']; // EDIT THE 2 LINES BELOW AS REQUIRED $send_email_to = "atendimento@optionmaker.com.br"; $email_subject = "Contato Site Mobile"; if ( $passouUmaVez == 1 ) { $indicadorErro = false; if ( empty($name) ) { echo "<p>Contato Site</p>"; $indicadorErro=true; } if ( empty($email) ) { echo "<p>Falta informar Email</p>"; $indicadorErro=true; } if ( empty($message) ) { echo "<p>Falta informar Mensagem</p>"; $indicadorErro=true; } if ( !$indicadorErro ) { $to = $email; $subject = $name; $message = $message; $headers = 'From: atendimento@optionmaker.com.br'."\r\n".'Reply-To: atendimento@optionmaker.com.br'."\r\n".'X-Mailer: PHP/' . phpversion(); $success = mail($to, $subject, $message, $headers); echo "<p>Tentativa de enviar Email com sucesso!</p>"; //limpando campos $name = ""; $email = ""; $message = ""; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hera Araújo Postado Março 23, 2021 Denunciar Share Postado Março 23, 2021 Olá, bom a dia. Veja, quando eu mando uma solução, é porque ela já foi testada(a várias vezes), portanto, funciona 100%. Tu precisas verificar se o teu provedor tem mesmo php, pois, pelo que qu vi, ele não está interpretando a TAG do PHP. Não era para aparecer "<?php echo $name ?>" no campo input, ou em nenhum campo input. Pois essa é a forma universal que o PHP faz para carregar o conteudo q foi digitado num campo input do tipo "text". Veja como funciona bem no meu: Aqui, eu tendo submeter sem informar nada para criticar. aqui, o formulário antes de ser submetido Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Peres Postado Março 23, 2021 Autor Denunciar Share Postado Março 23, 2021 5 minutos atrás, Hera Araújo disse: Olá, bom a dia. Veja, quando eu mando uma solução, é porque ela já foi testada(a várias vezes), portanto, funciona 100%. Tu precisas verificar se o teu provedor tem mesmo php, pois, pelo que qu vi, ele não está interpretando a TAG do PHP. Não era para aparecer "<?php echo $name ?>" no campo input, ou em nenhum campo input. Pois essa é a forma universal que o PHP faz para carregar o conteudo q foi digitado num campo input do tipo "text". O Ok Hera Araujo, entendi. Reitero meus agradecimentos por sua atenção e seu tempo. Sim, meu provedor possui o PHP, meu provedor é LOCAWEB. Mas ok, vou resolver. Muito obrigado mesmo. Saúde pra voce e pra todos. abs. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hera Araújo Postado Março 23, 2021 Denunciar Share Postado Março 23, 2021 beleza! Eu acredito que o aplicativo pode estar numa pasta que não é visível qo PHP, ou a configuração desse provedor exige alguma tag especifica, tipo "<php5...". Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Peres
Olá sou novo no fórum. Assim como também com programação. Estou descobrindo o PHP e como voce sabe, no começo a gente patina um pouco.
Tenho um form de contato numa pagina html que não envia nem a pau a mensagem para o email do destinatario. não entendo o que está faltando.
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.