talitaemmanuela Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 Oi pessoal, eu n'ao sou programadora então estou tendo a maior dor de cabeça com esse php. Espero que vocês possam me ajudar!Eu tenho um formulário no meu site onde é action chama o php:<form id="contato" method="post" action="contact.php"> No php eu tenho: <?php $to = "conde.taly@gmail.com"; $subject = "Site Contact"; $email = $_REQUEST['email']; $message = "Name: ".nl2br($_POST["name"]. "\r\n"); $message .= "Email: ".nl2br($_POST["email"]. "\r\n"); $message .= "Message: ".nl2br($_POST["message"]); $headers = "From: $email"; $headers .= "\nContent-Type: text/html; charset=UTF-8"; $headers .= "\nMIME-Version: 1.0"; $sent = mail($to, $subject, $message, $headers); if($sent) {print "Your mail was sent successfully"; } else {print "We encountered an error sending your mail"; } ?> E ai eu queria que quando o usuário apertasse o enviar, ele continuasse na mesma página sem dar reload e sem redirecionar para o php! Já tentei colocar tudo junto (form html e php) e chamar o arquivo contact.php por javascript assim: <script type="text/javascript" src="contact.php"></script>mas desse jeito o formulário não aparece no site.Será que não tem nenhum jeito de mandar email sem redirecionar a página? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 mete isto no teu form, <form id="contato" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <!-- poem isto no teu botao enviar --!> <input type="submit" class="contact" name="submit" value="Enviar registo" /> e o teu script mail() dentro deste ciclo if (!$_POST['submit']) { $to = "conde.taly@gmail.com"; $subject = "Site Contact"; $email = $_REQUEST['email']; $message = "Name: ".nl2br($_POST["name"]. "\r\n"); $message .= "Email: ".nl2br($_POST["email"]. "\r\n"); $message .= "Message: ".nl2br($_POST["message"]); $headers = "From: $email"; $headers .= "\nContent-Type: text/html; charset=UTF-8"; $headers .= "\nMIME-Version: 1.0"; $sent = mail($to, $subject, $message, $headers); if($sent) {print "Your mail was sent successfully"; } else {print "We encountered an error sending your mail"; } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 talitaemmanuela Postado Março 31, 2010 Autor Denunciar Share Postado Março 31, 2010 (editado) e o teu script mail() dentro deste cicloaonde devo colocar esse código php?? porque pela action ele não chama mais o arquivo externo então não sei onde colocar esse php!Seguinte, coloquei ele no <head> como <script type="text/php">código</script>mas ai me levou à uma pagina de erro:Firefox can't find the file at /C:/Portifolio/site9/<?php echo $_SERVER['PHP_SELF']; ?>. Editado Março 31, 2010 por talitaemmanuela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 metes o teu form aki<form ....</form><!-- metes logo no fim do form --!><?phpif (post submit) {bla bla bla}?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 talitaemmanuela Postado Março 31, 2010 Autor Denunciar Share Postado Março 31, 2010 (editado) beleza mas isso me levou à uma página de erro:Firefox can't find the file at /C:/Portifolio/site9/<?php echo $_SERVER['PHP_SELF']; ?>.Vou colocar aqui como ficou tudo junto:<form id="contato" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <h3>contato</h3> <label>Name:</label> <input type="text" name="name" /> <label>E-mail:</label> <input type="text" name="email" /> <label>Menssagem:</label> <textarea name="message" rows="3"></textarea> <input type="submit" name="submit" value="" id="button" /> </form> <?php if (!$_POST['submit']) { $to = "conde.taly@gmail.com"; $subject = "Site Contact"; $email = $_REQUEST['email']; $message = "Name: ".nl2br($_POST["name"]. "\r\n"); $message .= "Email: ".nl2br($_POST["email"]. "\r\n"); $message .= "Message: ".nl2br($_POST["message"]); $headers = "From: $email"; $headers .= "\nContent-Type: text/html; charset=UTF-8"; $headers .= "\nMIME-Version: 1.0"; $sent = mail($to, $subject, $message, $headers); if($sent) {print "Your mail was sent successfully"; } else {print "We encountered an error sending your mail"; } } ?> Editado Março 31, 2010 por talitaemmanuela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 olha eu meti esse codigo num ficheiro test.php no meu pc e funciona direitotanto no internet explorer como no mozila firefox, não sei k se passa no seu pc,tenta por session_start();mas não vejo outro jeito pk no meu dá direitinho com esse e muitos outros com o script que te dei Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 talitaemmanuela Postado Março 31, 2010 Autor Denunciar Share Postado Março 31, 2010 beleza vou ver aqui então, mas você viu meu código e tá direitinho? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 m3io Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 eu copiei ele inteiro e colei num ficheiro vazio. gravei e testei, dá direitinho Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 O problema é que você colocou o código php em um arquivo de extensão .html .Para o código rodar, o arquivo deverá ter extensão .php .Da forma que ele está passando, você enviará o formulário para a própria página, que interpretará a requisição e enviará o e-mail.Assim também haverá um refresh.Existem outras maneiras de fazer isso, e uma delas é com ajax.Ele faz requisições assíncronas ao servidor e consegue enviar dados para serem processados pelo PHP sem um refresh, porém o número de caracteres que você pode enviar é bem limitado, já que tudo é feito via GET (passado junto com o endereço da página).O que me preocupa no seu formulário é o seu textarea:<textarea name="message" rows="3"></textarea>Isso com certeza fará com que o tamanho estoure.Outra forma de fazer é utilizando um iframe e chamando o formulário dentro dele, assim, na hora de enviar, você poderia mandar só o iframe, deixando o resto da página intacta.Eu particularmente não gosto de iframe, acho incômodo trabalhar com ele, mas é uma forma a se pensar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 talitaemmanuela Postado Março 31, 2010 Autor Denunciar Share Postado Março 31, 2010 Exatamente. Acabei de ler um tópico em outro forum e vi que era problema de extensão.Foi tudo certinho e muito obrigada m3io pelos códigos.Agora Leandro, você entendeu o que eu queria. Apesar de ter funcionado, não é exatamente o que eu queria porque a página dá um refresh! Acho que ajax seria a melhor solução mas deve ser bem complicado.. Além disso se existe um limite de caracteres é chato porque 3 linhas é ate bem pouco já! O iframe deve ser mais simples mas também não vou muito com a cara..mas obrigada mesmo vocês por me ajudarem!!Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Março 31, 2010 Denunciar Share Postado Março 31, 2010 Ah, de nada! (=Volte sempre que precisar de ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
talitaemmanuela
Oi pessoal,
eu n'ao sou programadora então estou tendo a maior dor de cabeça com esse php. Espero que vocês possam me ajudar!
Eu tenho um formulário no meu site onde é action chama o php:
No php eu tenho: E ai eu queria que quando o usuário apertasse o enviar, ele continuasse na mesma página sem dar reload e sem redirecionar para o php! Já tentei colocar tudo junto (form html e php) e chamar o arquivo contact.php por javascript assim:mas desse jeito o formulário não aparece no site.
Será que não tem nenhum jeito de mandar email sem redirecionar a página?
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.