Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
lucasmoisesfalle

PHP Formulário de Contato manda informações repetidas

Recommended Posts

Boa tarde!

 

Sou iniciante em php e estou com um probleminha, tenho um formulário de contato em php que está mandando para o email as informações repetindo 5x, alguém poderia me ajudar?

 

####################################################################################################

 

formulario:

<?php 

$name_error = $email_error = $phone_error = $url_error = "";
$name = $email = $phone = $message = $url = $success = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $name_error = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $name_error = "Only letters and white space allowed"; 
    }
  }
  if (empty($_POST["email"])) {
    $email_error = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $email_error = "Invalid email format"; 
    }
  }
  
  if (empty($_POST["phone"])) {
    $phone_error = "Phone is required";
  } else {
    $phone = test_input($_POST["phone"]);
    if (!preg_match("/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i",$phone)) {
      $phone_error = "Invalid phone number"; 
    }
  }
  if (empty($_POST["url"])) {
    $url_error = "";
  } else {
    $url = test_input($_POST["url"]);
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$url)) {
      $url_error = "Invalid URL"; 
    }
  }
  if (empty($_POST["message"])) {
    $message = "";
  } else {
    $message = test_input($_POST["message"]);
  }
  
  if ($name_error == '' and $email_error == '' and $phone_error == '' and $url_error == '' ){
      $message_body = '';
      unset($_POST['submit']);
      foreach ($_POST as $key => $value){
          $message_body .=  "Nome: $name, E-mail: $email, Telefone: $phone, Site: $url, Mensagem: $message";
      }
      
      $to = 'xxxxxxxxxxxxxx@hotmail.com';
      $subject = 'Mensagem pelo site';
      if (mail($to, $subject, $message_body)){
          $success = "Mensagem enviada. Em breve estaremos retornando";
          $name = $email = $phone = $message = $url = '';
      }
  }
  
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

 

####################################################################################################

 

No e-mail, chega assim:

 

Nome: teste, E-mail: teste@teste.com.br, Telefone: 54998787788, Site: www.teste.com.br, Mensagem: teste teste testeNome: teste, E-mail: teste@teste.com.br, Telefone: 54998787788, Site: www.teste.com.br, Mensagem: teste teste testeNome: teste, E-mail: teste@teste.com.br, Telefone: 54998787788, Site: www.teste.com.br, Mensagem: teste teste testeNome: teste, E-mail: teste@teste.com.br, Telefone: 54998787788, Site: www.teste.com.br, Mensagem: teste teste testeNome: teste, E-mail: teste@teste.com.br, Telefone: 54998787788, Site: www.teste.com.br, Mensagem: teste teste teste

 

####################################################################################################

 

Gostaria que chegasse assim:

 

Nome: teste 
E-mail: teste@teste.com.br
Telefone: 54998787788
Site: www.teste.com.br
Mensagem: teste  

 

####################################################################################################

 

Estou nisso já o dia todo, mas como nao conheço a sintaxe muito bem to bem perdido. Se alguém poder me dar uma luz!

 

Desde já agradeço!

 

Editado por DiF
Inserir o código com o botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o ultimo if que é a parte responsável pelo envio do email está dentro do foreach, por isso está enviando varias vezes, só colocar fora que enviará uma vez só.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • E como eu faço isso amigo? Desculpe, não conheço muito dessa sintaxe! 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    <?php 
    
    $name_error = $email_error = $phone_error = $url_error = "";
    $name = $email = $phone = $message = $url = $success = "";
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["name"])) {
        $name_error = "Name is required";
      } else {
        $name = test_input($_POST["name"]);
        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
          $name_error = "Only letters and white space allowed"; 
        }
      }
      if (empty($_POST["email"])) {
        $email_error = "Email is required";
      } else {
        $email = test_input($_POST["email"]);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $email_error = "Invalid email format"; 
        }
      }
      
      if (empty($_POST["phone"])) {
        $phone_error = "Phone is required";
      } else {
        $phone = test_input($_POST["phone"]);
        if (!preg_match("/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i",$phone)) {
          $phone_error = "Invalid phone number"; 
        }
      }
      if (empty($_POST["url"])) {
        $url_error = "";
      } else {
        $url = test_input($_POST["url"]);
        if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$url)) {
          $url_error = "Invalid URL"; 
        }
      }
      if (empty($_POST["message"])) {
        $message = "";
      } else {
        $message = test_input($_POST["message"]);
      }
      
      if ($name_error == '' and $email_error == '' and $phone_error == '' and $url_error == '' ){
          $message_body = '';
          unset($_POST['submit']);
    
          $message_body .=  "Nome: $name, E-mail: $email, Telefone: $phone, Site: $url, Mensagem: $message";
    
          
          $to = 'xxxxxxxxxxx@hotmail.com';
          $subject = 'Mensagem pelo site';
          if (mail($to, $subject, $message_body)){
              $success = "Mensagem enviada. Em breve estaremos retornando";
              $name = $email = $phone = $message = $url = '';
          }
      }
      
    }
    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }

    tenta desse modo, o que falei à cima está incorreto, olhei rapidamente e não me atentei.

    Editado por DiF
    Retificar parte no código onde tinha um email.
    • Curtir 2

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×