Jump to content

Formulário de contacto


Ivo Pereira
 Share

Recommended Posts

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 😛

Cumps

Link to comment
Share on other 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. 😛

<?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.";
}
?>

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Link to comment
Share on other 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 😛

Eis um exemplo para usar o SMTP do GMAIL:

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

Link to comment
Share on other sites

Em adição, tem cuidado porque esse formulário está vulnerável a spam, por outras palavras, podem usar o teu formulário para enviar spam em teu nome. A solução é bastante simples, e passa por criar uma pequena função para filtrar os campos. Tens um exemplo em:

http://f6design.com/journal/2006/12/09/securing-php-contact-forms/

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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 😛

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 😛

Vou ver 👍

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

Btw, obrigado pelo artigo softclean 😄

Link to comment
Share on other sites

Não resultou 😛

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 👍

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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.