Форма обратной связи PHP – Хотите остаться на моем сайте после отправки

Я создаю контактную форму PHP, и все, что у меня есть, – это небольшая проблема, с моим скриптом php, когда при отправке электронной почты вызывается новая страница «Спасибо». Таким образом, фактический сайт с контактная форма исчезает, НО Я НЕ ХОЧУ, ЧТО ПРОИСХОДИТ.

Если нажата кнопка отправки, я хочу остаться на своем сайте, показывая пустую форму контакта и, возможно, ниже контактной формы только 1 строку, говоря «Спасибо …..» .

Как я могу это сделать? Есть ли там фрагмент кода, который может объяснить мне, что мне нужно включить в мой html и в мой php-файл? Надеюсь, это будет … Ниже, как мой php заканчивается прямо сейчас.

// send Email if (@mail( $empfaenger, htmlspecialchars( $betreff ), $mailbody, $mailheader )) { // if email was successfully send echo 'Thank you for your Email. We will get in touch with you very soon.'; } 

РЕДАКТИРОВАТЬ
@FreekOne
В настоящее время я использую ваш код с небольшой модификацией, потому что я хотел, чтобы вы поблагодарили вас или панель ошибок, вышли из окна и затухали текст. Сценарий принимает мой код (потому что он все еще работает), но на самом деле я не могу что текст действительно затухает. Я видел образцы раздвижных панелей с затуханием в тексте. Так что, похоже, это неправильная кодировка.
Пожалуйста, просмотрите код здесь, если хотите:
http://jsbin.com/ohuya3
Может быть, вы можете указать мне в правильном направлении. Конечно, помощь будет оценена всеми вами, ребята, здесь.

Установите форму для отправки данных на ту же страницу и попросите свой сценарий прослушать отправку. Что-то вроде:

contact.php

 <?php // Check if form was previously submitted if(isset($_POST['myFormSubmitted'])) { // Do your form processing here and set the response $response = 'Thank you for your Email. We will get in touch with you very soon.'; } ?> <!-- HTML here --> <?php if (isset($response)) { // If a response was set, print it out echo $response; } ?> <form method="POST" action="contact.php"> <!-- Your inputs go here --> <input type="submit" name="myFormSubmitted" value="Submit"> </form> <!-- More HTML here --> 

ОБНОВИТЬ

Учитывая предоставленную дополнительную информацию, я лично сделал бы это с помощью jQuery через AJAX. Сначала настройте форму и контейнер для результата:

HTML

 <form id="myForm" method="POST" action="contact.php"> <input type="text" id="name" name="name"> <input type="text" id="email" name="email"> <input type="text" id="message" name="message"> <input type="submit" name="myFormSubmitted" value="Submit"> </form> <div id="formResponse" style="display: none;"></div> 

Затем настройте скрипт php, который обрабатывает предоставленные данные и выводит ответ.

PHP (contact.php)

 <?php if(isset($_POST['myFormSubmitted'])) { // Do your form processing here and set the response echo 'Thank you for your Email. We will get in touch with you very soon.'; } ?> 

И, наконец, скрипт jQuery, который отправит вашу форму, не выходя из страницы, и вставьте результат в контейнер результатов (с хорошим и простым эффектом исчезновения).

JQuery

 $("#myForm").submit(function() { $.post('contact.php', {name: $('#name').val(), email: $('#email').val(), message: $('#message').val(), myFormSubmitted: 'yes'}, function(data) { $("#formResponse").html(data).fadeIn('100'); $('#name, #email, #message').val(''); /* Clear the inputs */ }, 'text'); return false; }); 

Надеюсь это поможет !

Все эти ответы ниже неверны. Это заставит вас время от времени получать спам-сообщения и путать клиентов.

Хотя решение довольно сложно

Прежде всего, вы должны изучить Золотое правило:
После обработки запроса POST ваш код должен перенаправить браузер с использованием метода GET. Без исключений.

Таким образом, сначала сделайте это так

 if ($_SERVER['REQUEST METHOD']=='POST') { mail( $empfaenger, htmlspecialchars( $betreff ), $mailbody, $mailheader ); header("Location: ".$_SERVER['PHP_SELF']); exit; } // your form goes here 

Вы все равно должны это делать.

Затем, если вы все еще хотите показать это бесполезное сообщение, у вас есть несколько способов сделать это.

  • с использованием параметра GET
  • использование файла cookie
  • AJAX.

например, для использования параметра GET

 if ($_SERVER['REQUEST_METHOD']=='POST') { mail( $empfaenger, htmlspecialchars( $betreff ), $mailbody, $mailheader ); header("Location: ".$_SERVER['PHP_SELF']."?thanks"); exit; } if ($_SERVER['QUERY_STRING']=='thanks') { echo 'Thank you for your Email. We will get in touch with you very soon.'; } // your form goes here