Marcos Jr 0 Denunciar post Postado Março 31, 2009 Olá, Eu tenho um formulário de envio de e-mail funcionando belezinha, ao clicar ele é redirecionado para uma página com o nome "Mensagem Enviada". Ele usa o FormMail.CGI para enviar a mensagem. <form id="form1" name="form1" method="post" action="../cgi-sys/FormMail.cgi"> <input type="hidden" name="recipient" value="meu@email.com"> <input type="hidden" name="subject" value="Pedido"> <!-- Página para qual é redirecionado após clicar em enviar/subit E página se não for enviado --> <input type="hidden" name="redirect" value="../envio-confirmado.php"> <!-- Página para qual é redirecionado se ocorrer algum erro durante o envio --> <input type="hidden" name="missing_fields_redirect" value="../erro.php">Mas eu não queria desta forma, eu quero que ao clicar em enviar seja exibida uma mensagem no topo do formulário, ou que o formulário sumisse e a mensagem fosse exibida, isso sem ir para outro página, sem redirecionar. Alguém sabe como eu posso fazer isto usando PHP ou outra linguagem que de para colocar em um página PHP? Eu pensei em colocar o formulário em um IFRAME, mas como ele exibi umas mensagens em cada campo se não preenchido, deixando ele bem mais alto, fazendo sumir boa parte do formulário dentro IFRAME e o que alguns navegadores fazem com IFRAME é um LIXO. Então a forma legal é exibir uma mensagem usando PHP ou outra linguagem. Desculpe se já tiver está solução no fórum, mas eu pesquisei e não encontrei. Agradesço desde já qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Medrado 1 Denunciar post Postado Março 31, 2009 Marcos não entendi bem sua pergunta... Você quer enviar um e-mail com script cgi e exibir uma mensagem (ao enviar) sem redirecionar a página?? é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Lost Bruner 0 Denunciar post Postado Março 31, 2009 em redirect envie para a mesma página no começo da página php teste se foi POST, se sim defina uma mensagem do tipo $str_message = "formulário enviado"; e escreva na tela se nao for POST entao coloque o codigo do formulário if (isset($_POST["enviar"])) { mensagem de enviado } else { formulário de envio } é isto? Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Jr 0 Denunciar post Postado Março 31, 2009 Muito obrigado pela ajuda dos dois... Muito obrigado mesmo. Marcos não entendi bem sua pergunta... Você quer enviar um e-mail com script cgi e exibir uma mensagem (ao enviar) sem redirecionar a página?? é isso? Sim, um formulário básico, e o script de envio é o FormMail.cgi que vem no cPanel. Tem como? em redirect envie para a mesma página no começo da página php teste se foi POST, se sim defina uma mensagem do tipo $str_message = "formulário enviado"; e escreva na tela Lost Bruner, O método é POST. <form id="form1" name="form1" method="post" action="../cgi-sys/FormMail.cgi"> Mas não entendi como usar esse código, eu coloquei este código na página e não deu certo: <?php $str_message = "formulário enviado"; ?> Sou bem ignorante em PHP rss Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Medrado 1 Denunciar post Postado Março 31, 2009 Bem, acho que entendi melhor. Acredito que você tem que fazer com que o cgi, apos enviar a mensagem redirecione pra página de origem trazendo alguma variável pra você saber se a msg foi enviada ou nao. Aí sim você testaria essa variável com o php e decidiria o que fazer. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Jr 0 Denunciar post Postado Março 31, 2009 Difícil é eu conseguir/saber fazer isto. Se alguém puder me ajudar. Ou não tem um método mais fácil que ao clicar em Subit uma mensagem seja exibida e o script CGI não redirecione? Pois se eu não colocar a página de redirecionamento, ele cai em uma página em branco com os dados preenchidos no form. Bem, acho que entendi melhor. Acredito que você tem que fazer com que o cgi, apos enviar a mensagem redirecione pra página de origem trazendo alguma variável pra você saber se a msg foi enviada ou nao. Aí sim você testaria essa variável com o php e decidiria o que fazer. Compartilhar este post Link para o post Compartilhar em outros sites
PAJE SANTOS 0 Denunciar post Postado Abril 1, 2009 cara tem mil e um jeitos... 1ª PHP = <? //pega o valor status $status = $_GET["status"]; //traz a msg de status if ($status=="Enviado"){ $msg = "Seu formulário foi enviado com sucesso!"; // mostra a div com o msg $display: block; }else{ $msg = "Ocorreram erros ao tentar enviar o seu formulário!"; // mostra a div com o msg $display: block; } if ($status==""){ //se não existir valor em status, esconder a div $display: none; } ?> <div id="status" style="display: <?=$display?>"><?=$msg?></div> <!-- Página para qual é redirecionado após clicar em enviar/subit E página se não for enviado --> <input type="hidden" name="redirect" value="caminhodoseuformulario.php?status=Enviado"> <!-- Página para qual é redirecionado se ocorrer algum erro durante o envio --> <input type="hidden" name="missing_fields_redirect" value="caminhodoseuformulario.php?status=Erro"> Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Jr 0 Denunciar post Postado Abril 1, 2009 Muito obrigado Paje, obrigado mesmo. Mas deu erro, em localhost usando o Wamp não deu certo, mas no servidor de hospedagem, não deu certo mesmo, e até exibiu um erro. se error: syntax error, unexpected ':' in /home/maxisb/public_html/pedido.php on line 135 Mesmo em localhost sem o erro não exibiu a mensagem, nem eu digitando a URL direta meusite.com/pedido.php?status=Enviado pra testar. Olha o código, eu numerei as linhas, o erro segundo o servidor foi na 135. 133 $msg = "Seu formulário foi enviado com sucesso!"; 134 // mostra a div com o msg 135 $display:block; 136 }else{ 137 $msg = "Ocorreram erros ao tentar enviar o seu formulário!"; Eu coloquei o código da seguinte forma: a parte me PHP eu coloquei fora do form, a div eu coloquei onde eu queria que a mensagem fosse exibida, e os imput eu coloquei dentro do formulário normal. Tentei colocar tudo junto também e nada. E sempre da erro quando é no servidor. Uma coisa que eu não sabia é que havia diferença em colocar <? ou <?php, se eu colocar <?php no início do código ao invés de <? da erro na linha 136, até em localhost. cara tem mil e um jeitos... 1ª PHP = <? //pega o valor status $status = $_GET["status"]; //traz a msg de status if ($status=="Enviado"){ $msg = "Seu formulário foi enviado com sucesso!";... Compartilhar este post Link para o post Compartilhar em outros sites
felipebmfaria 1 Denunciar post Postado Abril 1, 2009 Amigao, Se o SMTP local nao estiver configurado a funcao mail nao funciona mesmo... talvez seja melhor fazer testes no servidor de hospedagem olhe este trecho de código, jah utilizei muito, nao sei se atende, mas... <?php TODO O CÓDIGO PHP ?> <!-- depois de enviado o email... --> <script language="JavaScript">alert('A sua mensagem foi enviada com sucesso!'); location.href='index.php';</script> <!-- retorna para o index.. pode definir outra pagina tb... --> Abçs. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Jr 0 Denunciar post Postado Abril 1, 2009 Felipe, muito obrigado, eu vou tentar deste método... O que digo que não funcionou foi a exibição da mensagem. Eu não estou usando PHPMail() e sim um script CGI, eu consigo enviar e-mail de localhost fácil pelo formulário de e-mail já que ele envia os dados para o script em meu host que os processa e envia para o e-mail. @edit Felipe, eu usei o código, e entendi, ele exibe uma mensagem e em seguida usa o comando location para enviar para a página que você, só não entendi pq ele ficava em um ciclo sem fim, ou melhor entendi, mas não sei resolver rs. Mas eu queria um método igual o Paje Santos tinha passado, algo que exibisse uma mensagem no topo, que eu pudesse estilizar ela usando CSS, naquele método tem como. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Jr 0 Denunciar post Postado Abril 1, 2009 Com base no código do PAJE eu consegui, só substitui o código PHP por este: <? $status = $_GET['status']; if($status == enviado) { echo "Enviado com sucesso"; } if($status == erro) { echo "Nao foi possivel enviar"; } ?> E retirei a DIV, vou tentar personalizar com a DIV agora. Olhando o código que ele me passou eu vi que era fácil usando PHP, não precisava ser algo que ao clicar no botão a mensagem fosse exibida, e sim um redirecionamento para a mesma página com a nova mensagem exibida. O que eu fiz foi usar query string e bem clean mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
PAJE SANTOS 0 Denunciar post Postado Abril 17, 2009 foi uma destração minha.... encontrei o erro em $display: block e em $display: none . tem que ser $display = "block"; e $display = "none"; tá ae o codigo corrigido <? //pega o valor status $status = $_GET["status"]; //traz a msg de status if ($status=="Enviado"){ $msg = "Seu formulário foi enviado com sucesso!"; // mostra a div com o msg $display="block"; }else{ $msg = "Ocorreram erros ao tentar enviar o seu formulário!"; // mostra a div com o msg $display="block"; } if ($status==""){ //se não existir valor em status, esconder a div $display="none"; } ?> <div id="status" style="display: <?=$display?>"><?=$msg?></div> <!-- Página para qual é redirecionado após clicar em enviar/subit E página se não for enviado --> <input type="hidden" name="redirect" value="caminhodoseuformulario.php?status=Enviado"> <!-- Página para qual é redirecionado se ocorrer algum erro durante o envio --> <input type="hidden" name="missing_fields_redirect" value="caminhodoseuformulario.php?status=Erro"> Compartilhar este post Link para o post Compartilhar em outros sites
LeoCSilva 0 Denunciar post Postado Setembro 1, 2015 estou com o mesmo problema Compartilhar este post Link para o post Compartilhar em outros sites