Ir para conteúdo
Fórum Script Brasil
  • 0

formulario de contato


Paulo Peres

Pergunta

10 respostass a esta questão

Posts Recomendados

  • 0

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>

Link para o comentário
Compartilhar em outros 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: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.

Link para o comentário
Compartilhar em outros 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: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.

 

Link para o comentário
Compartilhar em outros 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 = "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        = "";

    }


}

?>

form1.jpg

form2.jpg

Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...