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

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« em: Junho 21, 2009, 09:52:52 »
Boas. num site estou a querer colocar um formulario para contacto atraves de php.

o formulario:

o codigo em html fica:

<form name="form1" method="post" action="email.php">
  <table width="100" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr bgcolor="#F4F4F4">
      <td valign="top" width="100" nowrap><h3><font class="texto">Nome:</font></h3></td>
      <td>
        <input class="form_campos" type="text" name="nome" size="34">      </td>
    </tr>
    <tr bgcolor="#EFEFEF">
      <td valign="top" width="100" nowrap><h3><font class="texto">E-mail:</font></h3></td>
      <td>
        <input class="form_campos" type="text" name="email" size="34">      </td>
    </tr>
    <tr bgcolor="#F4F4F4">
      <td valign="top" width="100" nowrap><h3><font class="texto">Assunto:</font></h3></td>
      <td>
        <select class="form_campos" name="assunto">
          <option class="form_campos" value="Opinião" selected>Opinião</option>
          <option class="form_campos" value="Sugestão">Sugestão</option>
          <option value="Marcação">Marcação</option>
          <option class="form_campos" value="Reclamação">Reclamação</option>
          <option class="form_campos" value="Outros">Outros</option>
        </select>      </td>
    </tr>
    <tr bgcolor="#EFEFEF">
      <td valign="top" width="100" nowrap><h3><font class="texto">Mensagem:</font></h3></td>
      <td>
        <textarea class="form_campos" name="mensagem" cols="34" rows="4"></textarea>      </td>
    </tr>
    <tr bgcolor="#F4F4F4">
      <td colspan="2" valign="middle">
        

        <div align="center">
          <input class="form_botao" type="submit" name="Enviar" value="Enviar Mensagem">
          <input class="form_botao" type="reset" name="Limpar" value="Limpar">
        </div>      </td>
    </tr>
  </table>
</form>




um codigo php da configuração

config.php

<?
/*
* Configurações do formulário de Contato
* Altere a variavel $mail_destino para o seu email
*
*/

//Seu email, para onde irao as informações do formulário
$mail_destino      = "xxxxxxxx@sapo.pt";

//Mensagem de cabeçalho do email
$mail_header      = "Mensagem enviada pelo formulário do Formulário de Contato.";

//Mensagem para o email de resposta
$msg_reply         = " $nome, recebemos o seu email com o assunto $assunto. Obrigado por nos contactar";

//Mensagem de Erro
$msg_erro         = "Os campos <font color=$cor_site>Nome, Mensagem e E-mail</font> não podem estar em branco.";
?>

ficheiro php email_form.php

<form name="form1" method="post"  action="email.php"
  <table width="100" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr bgcolor="">
      <td valign="top" width="100" nowrap><font class="texto">Nome:</font></td>
      <td>
        <input class="form_campos" type="text" name="nome" size="29">      </td>
    </tr>
    <tr bgcolor="">
      <td valign="top" width="100" nowrap><font class="texto">E-mail:</font></td>
      <td>
        <input class="form_campos" type="text" name="email" size="29">      </td>
    </tr>
    <tr bgcolor="">
      <td valign="top" width="100" nowrap><font class="texto">Assunto:</font></td>
      <td>
        <select name="assunto" class="form_campos">
          <option class="form_campos" value="Opinião" selected>Opinião</option>
          <option class="form_campos" value="Marcação">Marcação</option>
          <option class="form_campos" value="Sugestão">Sugestão</option>
          <option class="form_campos" value="Reclamação">Reclamação</option>
          <option class="form_campos" value="Sem assunto">Outros</option>
         
        </select>      </td>
    </tr>
    <tr bgcolor="">
      <td valign="top" width="100" nowrap><font class="texto">Mensagem:</font></td>
      <td>
        <textarea class="form_campos" name="mensagem" cols="29" rows="4"></textarea>      </td>
    </tr>
    <tr bgcolor= bgcolor="">
      <td colspan="2" valign="middle">
        

        <div align="center">
          <input class="form_botao" type="submit" name="Enviar" value="Enviar Mensagem">
          <input class="form_botao" type="reset" name="Limpar" value="Limpar">
        </div>      </td>
    </tr>
  </table>
</form>


 e por fim


Ficheiro email.php


<?php

include("config.php");

//Testa campos obrigatórios
if ($nome!="" and $mensagem!="" and $email!="")
   {
   $msg.="Nome: $nome\n";
   $msg.="E-mail: $email\n";
   $msg.="Assunto: $assunto\n";
   $msg.="$mensagem\n";
   
   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>
      ";
   }
?>


TAl ccomo podem constactar este codigo tem uma confrimação de preencimento dos campos nome, mensagem e e-mail. aqquando o preenchimento do fromulario apesar de ter toos os campos preenchidos, aparece sempre a informação de que  os campos em causa nao estao preenchidos, e nao é enviada a mensagem.

O que estarei a afzer mai, o servidor suporta php.



cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Ajuda em script para envio de mail por php
« Responder #1 em: Junho 21, 2009, 10:26:47 »
Por uma vista rápida, tu não estás a declarar a variável $nome...
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 #2 em: Junho 21, 2009, 11:22:32 »
Citação de: cenourinha
Por uma vista rápida, tu não estás a declarar a variável $nome...


Mais concretamente, onde pode ver essa falta??

ORiOn16

  • Membro Pro
  • Geek
  • ****
  • Mensagens: 132
  • Karma: 0
    • Ver Perfil
    • LibertyTuga
Ajuda em script para envio de mail por php
« Responder #3 em: Junho 21, 2009, 11:24:55 »
Alguns servidores tem o envio de email desactivado no PHP. Onde é que estás?

cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Ajuda em script para envio de mail por php
« Responder #4 em: Junho 22, 2009, 12:26:11 »
Citar
if ($nome!="" and $mensagem!="" and $email!="")

Isto nunca vai ocorrer, por as variáveis vão dar sempre vazio. Tens que dar um valor antes a variável.

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

Algo deste género, que vai associar as variáveis o valor do formulário.
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 #5 em: Junho 22, 2009, 05:28:59 »
Citação de: ORiOn16
Alguns servidores tem o envio de email desactivado no PHP. Onde é que estás?


alojamentogratuito.com

Citação de: cenourinha
Isto nunca vai ocorrer, por as variáveis vão dar sempre vazio. Tens que dar um valor antes a variável.

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

Algo deste género, que vai associar as variáveis o valor do formulário.


entao sera aqui que tenho de alterar ???

//Testa campos obrigatórios
if ($nome!="" and $mensagem!="" and $email!="")
{
$msg.="Nome: $nome\n";
$msg.="E-mail: $email\n";
$msg.="Assunto: $assunto\n";
$msg.="$mensagem\n";

if (@ mail ($mail_destino, $assunto, $msg, $mail_header))
{

t_e_e_m

  • Novato
  • *
  • Mensagens: 29
  • Karma: 0
    • Ver Perfil
Ajuda em script para envio de mail por php
« Responder #6 em: Junho 25, 2009, 09:39:36 »
ninguem, tem mais nada para me ajudar???

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
Ajuda em script para envio de mail por php
« Responder #7 em: Junho 25, 2009, 11:20:32 »
O que provavelmente se passa é que quem criou esse script tinha as register_globals on, se não souberes o que isso é vê aqui,
http://pt2.php.net/manual/en/ini.core.php#...egister-globals

Provavelmente o teu servidor tem e diga-se de passagem muito correctamente as register_globals OFF visto ser um buraco de todo tamanho na segurança, o que tens que fazer é meramente declarar as tuas variáveis passando os valores do POST do formulário

Podes saber mais acerca de POST aqui : -> http://www.w3schools.com/php/php_post.asp

Assim:

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

antes da validação que tens ou seja antes de

if ($nome!="" and $mensagem!="" and $email!="")


Para concluir o código que tens aí está pobremente construido, muito mau e com imensas falhas de segurança
Força aí
« Última modificação: Junho 25, 2009, 11:23:17 por ilovehentai »

cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Ajuda em script para envio de mail por php
« Responder #8 em: Junho 26, 2009, 12:04:19 »
Exacto.
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 #9 em: Junho 26, 2009, 07:12:26 »
Citação de: ilovehentai
O que provavelmente se passa é que quem criou esse script tinha as register_globals on, se não souberes o que isso é vê aqui,
http://pt2.php.net/manual/en/ini.core.php#...egister-globals

Provavelmente o teu servidor tem e diga-se de passagem muito correctamente as register_globals OFF visto ser um buraco de todo tamanho na segurança, o que tens que fazer é meramente declarar as tuas variáveis passando os valores do POST do formulário

Podes saber mais acerca de POST aqui : -> http://www.w3schools.com/php/php_post.asp

Assim:

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

antes da validação que tens ou seja antes de

if ($nome!="" and $mensagem!="" and $email!="")


Para concluir o código que tens aí está pobremente construido, muito mau e com imensas falhas de segurança
Força aí


Com essa alteração fica seguro??