Jump to content

[Duvida] - Codigo php em formulario de contacto


t_e_e_m
 Share

Recommended Posts

Boas

Já algum tempo que estou a tentar resolver um problema que não consigo.

Estou a tentar criar um formulario de contacto com validação, em que depois quer o administrador do site como quem envio o comentário iria receber um mail.

No mail do administrador e no mail de quem vez o comentario  estou a receber em duplicado os mails. E no site do usuario que comenta não consta uma informação que queria que contivesse ``voltaremos a contactalo``.

em baixo irei colocar o codigo

mail.php

<?php

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

include("teste.html");

//Testa campos obrigatórios
if ($nome!="" && $mensagem!="" && $email!="")
{

$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem;
if (@mail($mail_destino, $assunto, $msg, $mail_header)) 

{
	//Imprimindo confirmação de envio
	echo "<html><meta http-equiv=refresh content=5;URL=call.html; > Exmo(a) Sr.(a) " . $nome . ", a sua mensagem visando o assunto \"".
$assunto ."\" foi enviada com sucesso!<br>Obrigado!<br><br></html>";
	//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><center><br><br><font color=red><b>Erro ao enviar
e-mail!</b></font></center></html>";
}
else
//Alerta sobre os campos obrigatórios
echo "<html><meta http-equiv=refresh content=5;URL=formcall.html><br><br><center>
".$msg_erro."<br><br><a>Preencha correctamente os campos.</a></center></html>";

?>

ficheiro email-form.php

<form name="form1" method="post" action="email.php"
<table width="448" 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="Sugestão">Sugestã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">
<br>
<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>

ficheiro config.php

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

$cor_site = "orange";


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

//Mensagem de cabeçalho do email
$mail_header = "Mensagem enviada de cbo.pt.";


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

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

?>
Link to comment
Share on other sites

Boas

Já algum tempo que estou a tentar resolver um problema que não consigo.

Estou a tentar criar um formulario de contacto com validação, em que depois quer o administrador do site como quem envio o comentário iria receber um mail.

No mail do administrador e no mail de quem vez o comentario  estou a receber em duplicado os mails. E no site do usuario que comenta não consta uma informação que queria que contivesse ``voltaremos a contactalo``.

em baixo irei colocar o codigo

mail.php

<?php

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

include("teste.html");

//Testa campos obrigatórios
if ($nome!="" && $mensagem!="" && $email!="")
{

$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem;
if (@mail($mail_destino, $assunto, $msg, $mail_header)) 

{
	//Imprimindo confirmação de envio
	echo "<html><meta http-equiv=refresh content=5;URL=call.html; > Exmo(a) Sr.(a) " . $nome . ", a sua mensagem visando o assunto \"".
$assunto ."\" foi enviada com sucesso!<br>Obrigado!<br><br></html>";
	//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><center><br><br><font color=red><b>Erro ao enviar
e-mail!</b></font></center></html>";
}
else
//Alerta sobre os campos obrigatórios
echo "<html><meta http-equiv=refresh content=5;URL=formcall.html><br><br><center>
".$msg_erro."<br><br><a>Preencha correctamente os campos.</a></center></html>";

?>

ficheiro email-form.php

<form name="form1" method="post" action="email.php"
<table width="448" 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="Sugestão">Sugestã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">
<br>
<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>

ficheiro config.php

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

$cor_site = "orange";


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

//Mensagem de cabeçalho do email
$mail_header = "Mensagem enviada de cbo.pt.";


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

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

?>

Assim com cores é mais fácil

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

verifica se o mail() está a caçar algum erro de envio.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

não da erro algum, apenas recebo dois mails, e a resposta à pessoa, nao contem a informação desejada

Neste passo

$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem;

Adiciona o k keres.

$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem."\n\nVoltaremos a contactá-lo!";

E eu não sei sinceramente o que está a ser enviado duas vezes, mas estás a chamar muitos headers...

<?php

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

include("teste.html");

//Testa campos obrigatórios
if ($nome!="" && $mensagem!="" && $email!="")
{

$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem."\n\nVoltaremos a contactá-lo!";
if (@mail($mail_destino, $assunto, $msg, $mail_header)) 
{
                //Imprimindo confirmação de envio
                //echo "<html><meta http-equiv=refresh content=5;URL=call.html; > Exmo(a) Sr.(a) " . $nome . ", a sua mensagem visando o assunto \"".
$assunto ."\" foi enviada com sucesso!<br>Obrigado!<br><br></html>";
                //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><center><br><br><font color=red><b>Erro ao enviar
e-mail!</b></font></center></html>";
}
else
        //Alerta sobre os campos obrigatórios
        echo "<html><meta http-equiv=refresh content=5;URL=formcall.html><br><br><center>
".$msg_erro."<br><br><a>Preencha correctamente os campos.</a></center></html>";

?>

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

como assim, sugeres alguma alteração para simplificar?

Sim, sugiro que faças tudo na mesma página do Form. Isso não está assim tão complicado para precisares de 3 páginas diferentes.

Podes inserir o código de envio depois de:

if(isset('submit'))

{

  ... //Inseres aqui o código de envio, fazes gestão de erros, o que quiseres.

}

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

Sim, sugiro que faças tudo na mesma página do Form. Isso não está assim tão complicado para precisares de 3 páginas diferentes.

Podes inserir o código de envio depois de:

if(isset('submit'))

{

  ... //Inseres aqui o código de envio, fazes gestão de erros, o que quiseres.

}

Ai... agora é que me partistes todo....

Ficaria só com um ficheiro php?

Link to comment
Share on other sites

Ai... agora é que me partistes todo....

Ficaria só com um ficheiro php?

Sim só um ficheiro.

E eu enganei-me, era if(isset(POST['submit'])).

Tenta fazer, caso precises de ajuda posta aqui que certamente alguém ajudará.

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

Sim só um ficheiro.

E eu enganei-me, era if(isset(POST['submit'])).

Tenta fazer, caso precises de ajuda posta aqui que certamente alguém ajudará.

OK. Vou fazer estas alterações e depois digo algo aqui. Mas como ja vistes eu sou um iniciante nisto, a minha área profissional écompletamente diferente de programação. Agora como estou a iniciar uma pagina para um evento relativo à minha área, estou com estes problemas.

Agradeço imenso a tua disponibilidade.

Obrigado

Link to comment
Share on other sites

Ainda nao juntei o codigo no form porque continuo a ter problemas no mail que a pessoa que contactou o site.

No mail que envio para a pessoa que me contacta apenas aparece Mensagem enviada de cbo.pt

No ficheiro config.php tenho este codigo

pode me ajudar a ver o que tenho mal?

   

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

$cor_site = "orange";


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

//Mensagem de cabeçalho do email
$mail_header = "Mensagem enviada de cbo.pt.";


//Mensagem para o email de resposta
$msg_reply = $nome .", recebemos o seu email com o assunto <b>$assunto</b>. Obrigado por nos contactar";
//Mensagem de Erro
$msg_erro = "Os campos <font color=" . $cor_site . "><b>Nome, Mensagem e E-mail</b></font> não podem estar em branco.";

?>

Ou será que tenho alho errado no ficheiro email.php




<?php

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

include("teste.html");

//Testa campos obrigatórios
if ($nome!="" && $mensagem!="" && $email!="")
{


$msg = "De: ".$nome." (".$email.")\n\nMensagem: ".$mensagem."\n\nVoltaremos a contactá-lo!";

if (@mail($mail_destino, $assunto, $msg, $mail_header)) 
if (@mail($mail, $assunto, $mensagem, $mail_header))
{
	//Imprimindo confirmação de envio
	echo "<html><meta http-equiv=refresh content=5;URL=call.html; > Exmo(a) Sr.(a) " . $nome . ", a sua mensagem visando o assunto \"".$assunto ."\" foi enviada com sucesso!<br>Obrigado!<br><br></html>";
	//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><center><br><br><font color=red><b>Erro ao enviar
e-mail!</b></font></center></html>";
}
else
//Alerta sobre os campos obrigatórios
echo "<html><meta http-equiv=refresh content=5;URL=formcall.html><br><br><center>
".$msg_erro."<br><br><a>Preencha correctamente os campos.</a></center></html>";

?>

[\code]

E continuo a receber dois mail de contacto (diferentes)

um

Mensagem enviada de cbo.pt.

teste de marcação

outro

Mensagem enviada de cob.pt.

De: joao trincas (j.trincas@portugalmail.pt)

Mensagem: teste de marcação

Voltaremos a contactá-lo!

Link to comment
Share on other sites

1º Deixa que ele mostre os erros. Se leste o manual de instruções vais reparar que (com várias funções) ao adicionares um @ antes das chamada da função estás a suprimir quaisquer erros que a função está a lançar. por isso:

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

é um não não. deve ser:

if (mail($mail_destino, $assunto, $msg, $mail_header))
        if (mail($mail, $assunto, $mensagem, $mail_header))

o mesmo para:

//Enviando mensagem de confirmação para o email do internauta
                mail($email, "Re: ".$assunto, $msg_repy, $mail_header);

Repara naquele 1º bloco de código:

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

Estás a enviar dois 2-mails iguais para a mm pessoa.

Sugestão: Usa uma maneira mais correcta:

$mail1Sent = mail($mail_destino, $assunto, $msg, $mail_header);
$mail2Sent = mail($email, "Re: ".$assunto, $msg_repy, $mail_header);
if ($mail1Sent)
        if (mail2Sent)

A sério. O teu código precisa de uma boa revisão!

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

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.