Ivo Pereira Posted December 15, 2009 at 10:09 PM Report Share #300612 Posted December 15, 2009 at 10:09 PM 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 More sharing options...
scorch Posted December 15, 2009 at 10:16 PM Report Share #300617 Posted December 15, 2009 at 10:16 PM 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 More sharing options...
Ivo Pereira Posted December 15, 2009 at 10:30 PM Author Report Share #300621 Posted December 15, 2009 at 10:30 PM 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... Link to comment Share on other sites More sharing options...
scorch Posted December 15, 2009 at 10:32 PM Report Share #300623 Posted December 15, 2009 at 10:32 PM Não reparei,. porque estava lá no meio. Mas não o fechas-te? Dá-te algum erro especifico? Alguma mensagem de erro? PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
Ivo Pereira Posted December 15, 2009 at 10:40 PM Author Report Share #300626 Posted December 15, 2009 at 10:40 PM 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 😛 Link to comment Share on other sites More sharing options...
mAiN_iNfEcTiOn Posted December 16, 2009 at 11:04 AM Report Share #300681 Posted December 16, 2009 at 11:04 AM 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 More sharing options...
softklin Posted December 16, 2009 at 12:42 PM Report Share #300707 Posted December 16, 2009 at 12:42 PM 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 More sharing options...
mAiN_iNfEcTiOn Posted December 16, 2009 at 01:08 PM Report Share #300711 Posted December 16, 2009 at 01:08 PM 👍 True... nice post softclean 😄 não conhecia o artigo 😛 Link to comment Share on other sites More sharing options...
Ivo Pereira Posted December 16, 2009 at 06:39 PM Author Report Share #300812 Posted December 16, 2009 at 06:39 PM 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 More sharing options...
mAiN_iNfEcTiOn Posted December 16, 2009 at 08:19 PM Report Share #300840 Posted December 16, 2009 at 08:19 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now