Autor Tópico: Ajuda em script para envio de mail por php  (Lida 2727 vezes)

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
Ajuda em script para envio de mail por php
« Responder #10 em: Junho 26, 2009, 10:28:43 »
Fica meramente mais seguro em relação as register_globals, mas no fundo não, repara por exemplo a única validação que tens para o email é ver se o valor do campo de email não está vazio, quando fazes no if $email != "" a única coisa que tás a fazer é ver se o valor $email é diferente de vazio, significa que facilmente poderia colocar o que quiser no valor do email basta la colocar um simples "a" ou fazer um ataque por injecção no email , saber mais aqui -> http://www.bl0g.co.uk/20060214/php-mail-em...-to-send-email/

Cuidado com os cabeçalhos do e-mail

O que podes fazer para resolver isso mais simplesmente é fazer uma validação do valor do e-mail por expressão regular

Código: [Seleccione]
$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
if (preg_match($regexp, $email)) {
    echo "Email address is valid.";
} else {
    echo "Email address is <u>not</u> valid.";
}

Acima de tudo, estudar mais um pouco e procurares saber quais os problemas existem ao enviar mails pela função mail() do PHP


t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« Responder #11 em: Junho 27, 2009, 10:09:03 »
Citação de: ilovehentai
Fica meramente mais seguro em relação as register_globals, mas no fundo não, repara por exemplo a única validação que tens para o email é ver se o valor do campo de email não está vazio, quando fazes no if $email != "" a única coisa que tás a fazer é ver se o valor $email é diferente de vazio, significa que facilmente poderia colocar o que quiser no valor do email basta la colocar um simples "a" ou fazer um ataque por injecção no email , saber mais aqui -> http://www.bl0g.co.uk/20060214/php-mail-em...-to-send-email/

Cuidado com os cabeçalhos do e-mail

O que podes fazer para resolver isso mais simplesmente é fazer uma validação do valor do e-mail por expressão regular

Código: [Seleccione]
$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
if (preg_match($regexp, $email)) {
    echo "Email address is valid.";
} else {
    echo "Email address is <u>not</u> valid.";
}

Acima de tudo, estudar mais um pouco e procurares saber quais os problemas existem ao enviar mails pela função mail() do PHP

Então acha arriscado ter o formulario num site?
 
eu não percebop muito de php. Eu vou alterar o codigo e depois posso pedir para que me reveja o mesmo?


t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« Responder #12 em: Julho 05, 2009, 08:49:26 »

Agora coloquei assim o codigo:


<?php

include("config.php");

//Testa campos obrigatórios
if ($nome!="" and $mensagem!="" and $email!="")

$nome = $_POST['nome'];
$email = $_POST['email'] ;
$assunto= $_POST['assunto'] ;
$mensagem = $_POST['mensagem'];

   if (@ mail ($mail_destino, $assunto, $msg, $mail_header))
      {
      //Imprimindo confirmação de envio
      echo
         "
         <html>
         <meta http-equiv=refresh content=5;URL=formcall.html></html>";
         echo "$nome, a mensagem:
 $mensagem
.Foi enviada com sucesso!
";
         echo "Obrigado!


         ";
      //Enviando mensagem de confirmação para o email do internauta
      @ mail ($email, "Re: $assunto", $msg_repy, $mail_header);
      }
      else
      echo
         "
         <meta http-equiv=refresh content=5;URL=formcall.html>
         </html><center>

<font color=red>
         Erro ao enviar e-mail!
         </font></center>
         ";
   }
else
   {
   //Alerta sobre os campos obrigatórios
   echo
      "
      

<center>
      $msg_erro


      <a href=\"java script:window.history.go(-1)\" class=\"links\">Preencha correctamente os campos.[/url]
      </center>
      ";
   }
?>







Mas ao enviar a mensagem aparece a seguointe mensagem:


Parse error: syntax error, unexpected '}' in /home/crbpt/public_html/email.php on line 34

Alguem me pode ajudar neste problema!! ainda nao consegui por isto de pé e estou mesmo a precisar de uma coisa deste genero.


Podem dar uma maozinha?
« Última modificação: Julho 05, 2009, 09:12:42 por t_e_e_m »

cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Ajuda em script para envio de mail por php
« Responder #13 em: Julho 05, 2009, 09:12:55 »
Acho que já te respondemos a tudo... deves analisar a informação que te foi passada e tirar proveito dela.
Always know if the juice is worth the squeeze

GetHost4You - Alojamento Gratuito PHP + MySql
WebTuga Hosting - Alojamento Profissional PHP + MySql

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« Responder #14 em: Julho 06, 2009, 09:28:27 »
Citação de: cenourinha
Acho que já te respondemos a tudo... deves analisar a informação que te foi passada e tirar proveito dela.

E agradeço bastante a informação passado, mas tentei fazer o que ilovehentai e da o erro que citei em cima.

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
Ajuda em script para envio de mail por php
« Responder #15 em: Julho 10, 2009, 11:11:21 »
Na linha 34 tens uma chaveta a mais ou então esquecestes do ponto e vírgula, confirma

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« Responder #16 em: Julho 10, 2009, 11:42:51 »
Tirei a chaveta e da erro na linha 25!! lol

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
Ajuda em script para envio de mail por php
« Responder #17 em: Julho 11, 2009, 01:27:13 »
Moço precisas de começar pelo básico mesmo antes de te aventurar mais, quando inicias uma condição um IF por exemplo usas as chavetas para englobar o procedimento a tomar caso essa condição for verdadeira

assim temos

Código: [Seleccione]
if($condicao){

  //procedimento da condição 1 caso ela seja veradeira

}else if($condicao2){

  //caso a condição tiver sido falsa e a condição 2 verdadeira executa este procedimento

}else{


  // se nenhuma das anteriores for veradeiras executa o que tiver aqui

}


No teu caso o script é assim

Código: [Seleccione]
include("config.php");

//Testa campos obrigatórios
if ($nome!="" && $mensagem!="" && $email!=""){

    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $assunto= $_POST['assunto'];
    $mensagem = $_POST['mensagem'];

    if (@mail($mail_destino, $assunto, $msg, $mail_header))
    {
        //Imprimindo confirmação de envio
        echo
        "
        <html>
        <meta http-equiv=refresh content=5;URL=formcall.html></html>";
        echo "$nome, a mensagem:<br> $mensagem <br>.Foi enviada com sucesso!<br>";
        echo "Obrigado!<br><br>
        ";
        //Enviando mensagem de confirmação para o email do internauta
        @mail($email, "Re: $assunto", $msg_repy, $mail_header);
    }else{
        echo
        "
        <meta http-equiv=refresh content=5;URL=formcall.html>
        </html><center><br><br><font color=red>
        <b>Erro ao enviar e-mail!</b>
        </font></center>
    ";
    }
    
}else{

    //Alerta sobre os campos obrigatórios
    echo
    "
    <br><br><center>
    $msg_erro <br><br>
    <a href=\"java script:window.history.go(-1)\" class=\"links\">Preencha correctamente os campos.</a>
    </center>
    ";
    
}

?>

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Re: Ajuda em script para envio de mail por php
« Responder #18 em: Setembro 03, 2009, 06:46:43 »
Passado algum tempo cá estou eu, por questões de saude tive de me ausentar.

eu coloquei o codigo que o  ilovehentai me indicou corrigido, e mantem os erros! o que se passara?

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Re: Ajuda em script para envio de mail por php
« Responder #19 em: Setembro 03, 2009, 06:47:44 »
apesar de completar todos os campos, da a informação que nao preenchi os dados.