Ir para o conteúdo
Sir Pereira

Formulário de contacto

Mensagens Recomendadas

Sir Pereira    3
Sir Pereira

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
scorch    19
scorch

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sir Pereira    3
Sir Pereira

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sir Pereira    3
Sir Pereira

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
mAiN_iNfEcTiOn

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sir Pereira    3
Sir Pereira

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mAiN_iNfEcTiOn    0
mAiN_iNfEcTiOn

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.

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