Я создаю контактную форму 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
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