Jump to content


Photo

Duvida Simples


  • Faça o login para participar
2 replies to this topic

#1 fatto60

fatto60

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 21/02/2011, 22:27

Boa tarde,
Sei que minha dúvida é simples mas para mim é muito importante resolve-la.
Peguei esses dois códigos, formulario.html
<html> 
<head><title>Formulário para envio de e-mail</title> 
</head> 
<body> 
   <form method="POST" action="envia.php"> 
      <h1>Formulário para envio usando a função mail</h1> 
      <!--Caso queira permitir o preenchimento do email de destino descomente a linha abaixo--> 
      <!--Para:<br><input type="text" name="email_para"><br><br>--> 
      De:<br><input type="text" name="email_de"><br><br> 
      Assunto:<br><input type="text" name="assunto"><br><br> 
      Mensagem : 
      <textarea name="mensagem" rows="10" cols="60" lines="20"></textarea><br><br> 
      <input type="submit" name="send" value="Send"> 
   </form> 
</body> 
</html>
e envia.php
<?php 
//PROTEÇÃO ANTES DE ENVIAR 
//Verifica se os campos mensagem, email_de e assunto do formulário estão preenchidos 
if (empty($_POST['mensagem'])|| empty($_POST['email_de']) || empty($_POST['assunto'])) { 
   //Não tem mensagem vindo pelo formulário, não manda nada e redireciona para o formulario.html 
   header("Location: formulario.html"); 
} else { 
   //Verificação antes do envio; 
   //ESTA FUNÇÃO SERVE PARA VERIFICAR A CONSISTÊNCIA DE UM ENDEREÇO DE EMAIL 
   $emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; 
   if (!preg_match($emailPattern, $_POST['email_de'])) { 
      echo 'Por favor verifique o endereço de email.'; 
   } else { 
      //Aqui você pode definir para quem vai o email 
      $to="webmaster@dominio.com.br"; 
      //$to = $_POST['email_para']; 
      $from=$_POST['email_de']; 
      // Envia o email : 
      if (mail($to,$_POST['assunto'],$_POST['mensagem'],"From: $from\n")) { 
         // Mostra confirmação de email enviado com sucesso. 
         echo "Seu email foi enviado com sucesso."; 
         //Destroi as variáveis 
         unset ($_POST['email_de']); 
         unset ($_POST['assunto']); 
         unset ($_POST['mensagem']); 
      } else { 
         // Envio falhou 
         echo "Erro! Seu email não foi enviado."; 
      } 
   } 
} 
?>
da página da Locaweb para adaptar ao site que estou desenvolvendo.
O formulário é preenchido, E-mail, Assunto e a Mensagem.
Recebo tudo ok. Gostaria de acrescentar o campo Nome e não sei como fazera mudança no arquivo .php
Desde Já agradeço

Francisco

#2 copel

copel

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:ABT

Posted 24/02/2011, 13:38

Salve salve amigo...

Basicamente o que você deve fazer é o seguinte:

No arquivo "formulario.html"

Você cria mais um campo no formulário, que irá servir para capturar as informações para o nome, então ficara assim;
<input type="text" name="nome">

No arquivo envia.php que vai receber as informações do formulário via metodo de POST, você irá fazer as seguintes alterações.


1) Aqui é onde o código verifica os campos, então você vai ter que inserir o novo campo, veja:

//Verifica se os campos mensagem, email_de e assunto do formulário estão preenchidos
if ( empty($_POST['nome']) |empty($_POST['mensagem'])|| empty($_POST['email_de']) || empty($_POST['assunto'])) {
//Não tem mensagem vindo pelo formulário, não manda nada e redireciona para o formulario.html
header("Location: formulario.html");

2) Segundo é fazer algumas modificações na area que são listados as string que serão enviadas para o email, veja:

// Envia o email :
if (mail($to,$_POST['nome'],$_POST['assunto'],$_POST['mensagem'],"
From: $from\n")) {
// Mostra confirmação de email enviado com sucesso.
echo "Seu email foi enviado com sucesso.";
//Destroi as variáveis
unset ($_POST['nome']);
unset ($_POST['email_de']);
unset ($_POST['assunto']);
unset ($_POST['mensagem']);

O Script inteiro modificado fica assim:

--- formulario.html ---

<html>
<head><title>Formulário para envio de e-mail</title>
</head>
<body>
<form method="POST" action="envia.php">
<h1>Formulário para envio usando a função mail</h1>
<!--Caso queira permitir o preenchimento do email de destino descomente a linha abaixo-->
<!--Para:<br><input type="text" name="email_para"><br><br>-->
Nome:<input type="text" name="nome"><br<br>
De:<br><input type="text" name="email_de"><br><br>
Assunto:<br><input type="text" name="assunto"><br><br>
Mensagem :
<textarea name="mensagem" rows="10" cols="60" lines="20"></textarea><br><br>
<input type="submit" name="send" value="Send">
</form>
</body>
</html>


--- envia.php ---

<?php
//PROTEÇÃO ANTES DE ENVIAR
//Verifica se os campos mensagem, email_de e assunto do formulário estão preenchidos
if (empty($_POST['nome'])|| empty($_POST['mensagem'])|| empty($_POST['email_de']) || empty($_POST['assunto'])) {
//Não tem mensagem vindo pelo formulário, não manda nada e redireciona para o formulario.html
header("Location: formulario.html");
} else {
//Verificação antes do envio;
//ESTA FUNÇÃO SERVE PARA VERIFICAR A CONSISTÊNCIA DE UM ENDEREÇO DE EMAIL
$emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
if (!preg_match($emailPattern, $_POST['email_de'])) {
echo 'Por favor verifique o endereço de email.';
} else {
//Aqui você pode definir para quem vai o email
$to="webmaster@dominio.com.br";
//$to = $_POST['email_para'];
$from=$_POST['email_de'];
// Envia o email :
if (mail($to,$_POST['nome'], $_POST['assunto'],$_POST['mensagem'],"
From: $from\n")) {
// Mostra confirmação de email enviado com sucesso.
echo "Seu email foi enviado com sucesso.";
//Destroi as variáveis
unset ($_POST['nome']);
unset ($_POST['email_de']);
unset ($_POST['assunto']);
unset ($_POST['mensagem']);
} else {
// Envio falhou
echo "Erro! Seu email não foi enviado.";
}
}
}
?>

Amigo basicamente é isso, fiz meio correndo aqui só p/ quebrar o galho para você, qualquer dúvida volta a postar ai, abraço.
Copel

#3 fatto60

fatto60

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 24/02/2011, 19:51

Olá Copel,
Obrigado por responder, mas já tentei como você falou e o que acontece é que na lista de mensagens recebidas na coluna de endereços de e-mail vem algo como admin@WHW0124... e não o e-mail de quem enviou, na coluna assunto vem o nome de quem enviou e no espaço da mensagem além dela própria vem também o assunto.
Aguardo dicas de vcs.
Abraços!
Francisco




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq