Jump to content
Fórum Script Brasil
  • 0

formulario de contato


Question

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 to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

esse é  código PHP que estou usando:

<?php
// EDIT THE 2 LINES BELOW AS REQUIRED
$send_email_to = "[email protected]";
$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._%-][email protected][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 [email protected]</div>
                </form>

Link to post
Share on other sites
  • 0

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:[email protected];

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 = "[email protected]";
$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: [email protected]'."\r\n".'Reply-To: [email protected]'."\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.

Link to post
Share on other sites
  • 0
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:[email protected];

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 = "[email protected]";
$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: [email protected]'."\r\n".'Reply-To: [email protected]'."\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.

 

Link to post
Share on other sites
  • 0
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 = "[email protected]";
$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: [email protected]'."\r\n".'Reply-To: [email protected]'."\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        = "";

    }


}

?>

form1.jpg

form2.jpg

Link to post
Share on other sites
  • 0

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.

image.png.d566595d7051be685920b8b5079a395b.png

 

 

aqui, o formulário antes de ser submetido

image.png.c0fc2d832ccaff30d4c9e0641e9a707a.png

Link to post
Share on other sites
  • 0
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.

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149151
    • Total Posts
      645419
×
×
  • Create New...