• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

Formulário de contacto

10 mensagens neste tópico

Boas pessoal,

não sei porquê, este código não está a funcionar...

Tenho este código para o formulário:

contactos.php

      <table width="400" border="0" align="center" cellpadding="0" cellspacing="1">
        <tr>
          <td><form action="enviar_contacto.php" method="post" name="form1" id="form1">
            <table width="100%" border="0" cellspacing="1" cellpadding="3">
              <tr>
                <td width="16%"><font size="1" face="Verdana, Geneva, sans-serif">Assunto</font></td>
                <td width="2%"><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td width="82%"><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="subject" type="text" id="subject" size="50" />
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">Mensagem</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <textarea name="detail" cols="38" rows="4" id="detail"></textarea>
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">Nome</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="name" type="text" id="name" size="50" />
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">E-mail</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="customer_mail" type="text" id="customer_mail" size="50" />
                </font></td>
              </tr>
              <tr>
                <td> </td>
                <td> </td>
                <td align="center"><font size="1" face="Verdana, Geneva, sans-serif">
                  <input type="submit" name="Submit" value="Enviar" />
                  <input type="reset" name="Submit2" value="Apagar" />
                </font></td>
              </tr>
            </table>

enviar_contacto.php

<?php
$subject ="$subject";
$message="$detail";
$mail_from="$customer_mail";
$header="from: $name <$mail_from>";

$to ='email@email.com';

$send_contact=mail($to,$subject,$message,$header);

if($send_contact){
echo "Obrigado pelo seu contacto, responderemos assim que possível.";
}
else {
echo "Ocorreu um erro! Por favor envie um e-mail pelo seu endereço.";
}
?>

Dá-me o erro, aliás, não me executa o envio do formulário :P

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tens declarado o form.

<form action="enviar_contacto.php" method="post">
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1">
        <tr>
          <td><form action="enviar_contacto.php" method="post" name="form1" id="form1">
            <table width="100%" border="0" cellspacing="1" cellpadding="3">
              <tr>
                <td width="16%"><font size="1" face="Verdana, Geneva, sans-serif">Assunto</font></td>
                <td width="2%"><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td width="82%"><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="subject" type="text" id="subject" size="50" />
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">Mensagem</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <textarea name="detail" cols="38" rows="4" id="detail"></textarea>
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">Nome</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="name" type="text" id="name" size="50" />
                </font></td>
              </tr>
              <tr>
                <td><font size="1" face="Verdana, Geneva, sans-serif">E-mail</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">:</font></td>
                <td><font size="1" face="Verdana, Geneva, sans-serif">
                  <input name="customer_mail" type="text" id="customer_mail" size="50" />
                </font></td>
              </tr>
              <tr>
                <td> </td>
                <td> </td>
                <td align="center"><font size="1" face="Verdana, Geneva, sans-serif">
                  <input type="submit" name="Submit" value="Enviar" />
                  <input type="reset" name="Submit2" value="Apagar" />
                </font></td>
              </tr>
            </table>
<form>

E as variáveis estão mal. Tens de recorrer ao array $_POST. :P

<?php
$subject =$_POST["subject"];
$message=$_POST["detail"];
$mail_from=$_POST["customer_mail"];
$header="from: ".$_POST["name"]." <".$_POST["mail_from"].">";

$to ='email@email.com';

$send_contact=mail($to,$subject,$message,$header);

if($send_contact){
echo "Obrigado pelo seu contacto, responderemos assim que possível.";
}
else {
echo "Ocorreu um erro! Por favor envie um e-mail pelo seu endereço.";
}
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, mas mesmo assim continuou a dar erro... e porque é que no formulário declaraste o form duas vezes? Ele já estava declarado, foi foi dentro da tabela...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não reparei,. porque estava lá no meio. Mas não o fechas-te?

Dá-te algum erro especifico? Alguma mensagem de erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não reparei,. porque estava lá no meio. Mas não o fechas-te?

Dá-te algum erro especifico? Alguma mensagem de erro?

Fechei.

Não me dá porque tenho aquela mensagem no else :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poderá ser dos headers:

experimenta subtituir este código:

$header="from: ".$_POST["name"]." <".$_POST["mail_from"].">";

Por este:

$header =
    "From: {$_POST["name"]} <{$_POST["mail_from"]}>" . chr(13) . chr(10) . 
    "X-Mailer: PHP/" . phpversion() . chr(13) . chr(10);

No entanto, deves ter a função mail() configurada no ficheiro php.ini.

Eu, de qualquer modo, costumo aconselhar uma classe de terceiros. Por exemplo, phpMailer que é muito simples de usar :P

Eis um exemplo para usar o SMTP do GMAIL:

http://phpmailer.worxware.com/index.php?pg=examplebgmail

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poderá ser dos headers:

experimenta subtituir este código:

$header="from: ".$_POST["name"]." <".$_POST["mail_from"].">";

Por este:

$header =
    "From: {$_POST["name"]} <{$_POST["mail_from"]}>" . chr(13) . chr(10) . 
    "X-Mailer: PHP/" . phpversion() . chr(13) . chr(10);

Não resultou :P

No entanto, deves ter a função mail() configurada no ficheiro php.ini.

Tenho, porque se no Joomla, que está instalado no mesmo server, envia os mails...

Eu, de qualquer modo, costumo aconselhar uma classe de terceiros. Por exemplo, phpMailer que é muito simples de usar :P

Vou ver :thumbsup:

Btw, esta class possui algo para evitar spam como foi referido aqui?

Btw, obrigado pelo artigo softclean :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não resultou :P

Tenho, porque se no Joomla, que está instalado no mesmo server, envia os mails...

Hum, estranho... Se calhar é por causa dos headers adicionais.... Experimenta enviar os e-mails SEM o parâmetro $header.

Se enviar é porque os headers ou não estão a ser bem definidos ou o próprio servidor não permite 'simular' e-mails enviados de outro domínio.

Vou ver :thumbsup:

Btw, esta class possui algo para evitar spam como foi referido aqui?

Isso não sei, é uma questão de pesquisar. Mas penso que não.

Abraço.

0

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