Ir para o conteúdo
fil79

função mail

Mensagens Recomendadas

fil79    5
fil79

boas

estou a usar o seguinte script para enviar mail que funciona perfeitamente :

<form action="envia.php" method=post> 
Nome: <input type=text name="nome" size=16> 
<br> 
Email: <input type=text name=email size=16> 
<br> 
Comentários: <textarea name=coment cols=32 rows=6></textarea> 
<br> 
<input type=submit value="Enviar"> 
</form>

<?php
   $corpo = "Formulário enviado\n"; 
   $corpo .= "Nome: " . $_POST["nome"] . "\n"; 
   $corpo .= "Email: " . $_POST["email"] . "\n"; 
   $corpo .= "Comentários: " . $_POST["coment"] . "\n"; 

   mail("algo@gmail.com","Formulário recebido",$corpo); 

   //agradeço pelo envio 
    echo"Obrigado por preencher o formulário.<br><a href='contactos.php'>Voltar</a>"; 

?> 

acontece que na caixa de entrada do correio destinatário aparece como Apache...existe alguma maneira de mudar este valor para uma variável inserida no formulário?Desde já agradeço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bjecas    0
Bjecas

acontece que na caixa de entrada do correio destinatário aparece como Apache...existe alguma maneira de mudar este valor para uma variável inserida no formulário?Desde já agradeço

:dontgetit:

Quererás dizer que na caixa de entrada o rementente aparece como Apache? Penso que o que te dava jeito era definir o campo "From" do mail que envias, o que tens que fazer com headers adicionais:

<?php
$to      = "algo@gmail.com";
$subject = "Formulário recebido";
$message = $corpo;
$headers = "From: ".$_POST["nome"]." <".$_POST["email"]."> \r\n";

mail($to, $subject, $message, $headers);
?>

Outra coisa, está-me a dar arrepios usar "user input" (como o conteúdo de $_POST) directamente, sem nenhum tipo de verificação ou validação. Assim de repente, se calhar dava para forjar os campos "nome" ou "email" para enviar headers adicionais... o que nunca é boa coisa.

Ainda mais uma coisa, algo me diz que se usares este script num site "aberto" vais ter que arranjar um mecanismo qualquer para evitar spam, hehe...  :cheesygrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fil79    5
fil79

exacto...o remetente aparece como apache...em relação ao script este ainda vai levar alterações como a validação de campos,etc...só não sei como posso evitar spam..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

exacto...o remetente aparece como apache...em relação ao script este ainda vai levar alterações como a validação de campos,etc...só não sei como posso evitar spam..

CAPTCHA

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
LuBoc    1
LuBoc

Olá,

exacto...o remetente aparece como apache...em relação ao script este ainda vai levar alterações como a validação de campos,etc...só não sei como posso evitar spam..

Como bem referiu o djthyrax o CAPTCHA é uma das melhores formas de evitares o SPAM, visto gerar uma imagem aleatória sempre que se acede à página do formulário.

Podes, de usar esta função:

function VerificaEmail($email){
  $valido = 1;
  // Saber se surgem caracteres de quebra de linha
  if (eregi("(\r|\n)", $email)) { $valido=0; }
  // Procura se existem caracteres (in)válidos no endereço de email
  if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)) { $valido=0; }

  return $valido;
}

Está escrito de forma simples para fácil compreensão.

No teu código basicamente terias que fazer:

<?php
function VerificaEmail($email){
  $valido = 1;
  // Saber se surgem caracteres de quebra de linha
  if (eregi("(\r|\n)", $email)) { $valido=0; }
  // Procura se existem caracteres (in)válidos no endereço de email
  if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)) { $valido=0; }

  return $valido;
}

   $corpo = "Formulário enviado\n"; 
   $corpo .= "Nome: " . $_POST["nome"] . "\n"; 
   $corpo .= "Email: " . $_POST["email"] . "\n"; 
   $corpo .= "Comentários: " . $_POST["coment"] . "\n"; 

   if (VerificaEmail($_POST["email"])) {
     $to      = "algo@gmail.com";
     $subject = "Formulário recebido";
     $message = $corpo;
     $headers = "From: ".$_POST["nome"]." <".$_POST["email"]."> \r\n"; 
     mail($to, $subject, $message, $headers);
    //agradeço pelo envio 
     echo"Obrigado por preencher o formulário.<br><a href='contactos.php'>Voltar</a>"; 
  } else {
    echo "ATENÇÃO: Deve inserir um email correcto!<br><a href='contactos.php'>Voltar</a>";
}
?> 

Faz a experiência, colocando email inválidos, ou até mais do que um no mesmo campo.

Mesmo assim, se tiveres oportunidade de usar CAPTCHA, sempre ficas mais "protegido" .

Cumprimentos,

LuBoc

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fil79    5
fil79

está a funcionar tudo bem...só uma correcção na linha if (VerificaEmail($_POST["email"]) { esqueceste-te de fechar um parentesis ...de qualquer modo muito obrigado :cheesygrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fil79    5
fil79

surgiu uma nova dúvida....o script faz o pretendido mas quando o texto tem acentos não faz a sua codificação...no html tenho isto:

<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />

não deveria o utf-8 reconhecer os acentos?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade