Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não redirecionar após enviar formulário


talitaemmanuela

Pergunta

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?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

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"; }

}

Link para o comentário
Compartilhar em outros sites

  • 0
e o teu script mail() dentro deste ciclo

aonde 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 por talitaemmanuela
Link para o comentário
Compartilhar em outros sites

  • 0

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 por talitaemmanuela
Link para o comentário
Compartilhar em outros sites

  • 0

olha eu meti esse codigo num ficheiro test.php no meu pc e funciona direito

tanto 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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...