Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, não entendo de PHP, por isso peço ajuda de vocês. Para quem manja, creio que minha dúvida é bem fácil.
Tenho uma página html com um formulário de contato que envia um email para o webmaster usando PHP. Após enviar os dados, ao clicar no botão voltar do browser, o formulário continua preenchido. Gostaria que ao clicar no botão enviar, os dados sejam enviados e o formulário seja limpo automaticamente. Já procurei na net e a solução mais indicada é usar a seguinte instrução: document.nomedomeuformulario.reset();
O problema é que não sei onde colocar esta instrução. Alguém pode me ajudar? Segue o código php abaixo:
<?
$mensagem = "Nome: ".$_POST['nome']." \n";
$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Telefone: ".$_POST['fone']." \n";
$mensagem .= "Mensagem: ". $_POST['mensagem'];
$headers = "";
$emailsender = "xxxx@xxx.com.br";
$emaildestinatario = "xxxx@xxx.com.br";
$assunto = "Mensagem do site www.xxx.com.br";
if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))
{
// Se for Postfix
$headers .= "Return-Path: " . $emailsender . $quebra_linha;
}
echo "Seu e-mail foi enviado com sucesso. Obrigado";
?>
Obs: o script é bem simples e não tem validação de dados, etc. Como não sou programador, pra mim já está bom. Senão vou ficar um tempão quebrando a cabeça. Aproveitando a dúvida, gostaria de saber como faço para pôr um link para a página inicial do site quando der a mensagem "Seu e-mail foi enviado com sucesso".
Agradeço a ajuda
Dê uma olhada nesse link vai lhe ajudar
Outra sugestão:
HTML:
<form name="meuFormulario" method="post" action="">
<input type="text" name="exemplo" />
<button type="submit">Enviar</button>
</form>
PHP+Javascript -- Para ser colocado dentro do 'if' que verifica se os dados do formulário foram enviados
echo "<script type="text/javascript">document.meuFormulario.reset();</script>"
>
abaixo disso:
echo "Seu e-mail foi enviado com sucesso. Obrigado";
coloque isso:
echo '
<script type="text/JavaScript">
document.location.reload();
</script>';
Obrigado pela ajuda Andre, tentei desta forma, mas após clicar no botão enviar, aparecia a seguinte mensagem no navegador:
Para exibir esta página, o Firefox precisa enviar informações que repetirão qualquer ação efetuada anteriormente (como uma pesquisa ou confirmação de compra).
reenviar - cancelar
Clicando no botão reenviar ou cancelar, os dados são enviados, mas ao voltar os dados do formulário ainda estão lá.
>
Outra sugestão:
HTML:
<form name="meuFormulario" method="post" action="">
<input type="text" name="exemplo" />
<button type="submit">Enviar</button>
</form>
PHP+Javascript -- Para ser colocado dentro do 'if' que verifica se os dados do formulário foram enviados
echo "<script type="text/javascript">document.meuFormulario.reset();</script>"
Mangakah, desculpe a ignorância, mas dentro do 'if' que dizer onde exatamente? Coloquei entre os parênteses e deu erro, entre as chaves também deu erro.
if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))
{
// Se for Postfix
$headers .= "Return-Path: " . $emailsender . $quebra_linha;
}Deve ser porque faltou um ponto e vírgula (';') no final...
echo "<script type="text/javascript">document.meuFormulario.reset();</script>";
Sorry.
Então faça:
Retire o seu echo "Seu e-mail foi enviado com sucesso. Obrigado";
e coloque isto aqui
echo '
<script type="text/JavaScript">
alert("Seu e-mail foi enviado com sucesso. Obrigado");
location.href="INFORME AQUI A PÁGINA QUE SERA REDIRECIONADA exp: contato.html"
</script>
';>
Então faça:
Retire o seu echo "Seu e-mail foi enviado com sucesso. Obrigado";
e coloque isto aqui
echo '
<script type="text/JavaScript">
alert("Seu e-mail foi enviado com sucesso. Obrigado");
location.href="INFORME AQUI A PÁGINA QUE SERA REDIRECIONADA exp: contato.html"
</script>
';
Andre Cristhian, muito obrigado. Agora ficou perfeito com este último script que você mandou. Para ajudar futuros despesperados como eu, segue o código inteiro como ficou do meu arquivo enviar.php:
<?
$mensagem = "Nome: ".$_POST['nome']." \n";
$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Telefone: ".$_POST['fone']." \n";
$mensagem .= "Mensagem: ". $_POST['mensagem'];
$headers = "";
$emailsender = "xxxx@xxx.com.br";
$emaildestinatario = "xxxx@xxx.com.br";
$assunto = "Mensagem do site www.xxx.com.br";
if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))
{
// Se for Postfix
$headers .= "Return-Path: " . $emailsender . $quebra_linha;
}
echo '
<script type="text/JavaScript">
alert("Seu e-mail foi enviado com sucesso. Obrigado");
location.href="contato.htm"
</script>
';
?>
Só para constar, alguns tutoriais que encontrei na web, dizia para adicionar um comando para limpar o formulário direto no código html, tal como este exemplo:
<input type="button" value="Enviar" onclick="NomeDoForm.submit(); NomeDoForm.reset();">
Porém, isto não funciona, uma vez que apaga os dados antes de submeter. O email chegava com os campos todos em branco.
Depois de passar a tarde me batendo, com a ajuda do Andre, funcionou. Embora não tenha um comando para limpar o formulário, quando clica no botão ok da mensagem, a página contato.htm é recarregada e o formulário também vem limpo.
>
Deve ser porque faltou um ponto e vírgula (';') no final...
echo "<script type="text/javascript">document.meuFormulario.reset();</script>";
Sorry.
Mangakah, obrigado pela ajuda também. Como já resolvi o problema de outra forma, vou deixar assim mesmo. Valeu
>
Deve ser porque faltou um ponto e vírgula (';') no final...
echo "<script type="text/javascript">document.meuFormulario.reset();</script>";
Sorry.
apesar de estar faltando ponto e vírgula,(";") as aspas que abre e fecha o "echo" tem que ser simples dessa forma: echo '<script type="text/javascript">document.meuFormulario.reset();</script>';
abaixo disso:
echo "Seu e-mail foi enviado com sucesso. Obrigado";
coloque isso: