Передача данных из php?

Есть html форма. Передает данные в php-скрипт, который отправляет письмо на эмейл.

Ключевой кусок кода:

$res = mail($to, $subject, $message, $header) or
die ("could not send email - ".$res);

if ($res ==true){
    echo "Ваша заявка принята вам перезвонят через 15 минут  ";}


Как это работает со стороны пользователя: он заполняет форму и его переводит на пустую страницу где вот этот текст:
Ваша заявка принята вам перезвонят через 15 минут


Вопрос: как сделать так чтобы он оставался на html странице, а ему окно всплывал с сообщением этим?
Спасибо.
  • Вопрос задан
  • 2631 просмотр
Решения вопроса 1
@CloudMonster
сделай header("Location: index.php?status=send");
if ($_GET['status'] == 'send') {
echo "vse horowo!";
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
REST. Если при отправке email-а вернулся статус код 201, то показывать сообщение о том что хорошо. Если нет (500 - ошибка сервера, 400 - данные не валидны и т.д.) - то о том что все плохо. Статус код отправлять в хедеры (функция header).

Это если правильно делать, а если по принципу хуяк-хуяк в продакшен - проверяйте является ли запрос посланным через XmlHttpRequest и отправляйте вместо строки json например, со статусом прошло все хорошо или нет, и текстом ошибки.
Ответ написан
catanfa
@catanfa
это делается именно на js, очень просто. Серверную часть при этом можно вообще не менять. С помощью jquery достаточно послать ajax-запрос на сервер, который ответит "Ваша заявка принята..", у вас в браузере отработает ваш обработчик, в котором можно вывести в виде всплывающего окна всё что угодно. Можно начать с этого habrahabr.ru/post/42426

если сказать немного больше, то такие вещи, как отправка почты, лучше никогда не делать в рамках обычного запроса. Потому что это операция может завершиться с ошибкой, может выполняться несколько минут, всё это зависит от кучи неподконтрольных вам факторов и т.д. Поэтому лучше использовать очередь сообщений.

а если вы хотите, чтобы это ещё и работало почти всегда, а не через раз, и у вас была куча возможностей вроде аналитики, простоты реализации и прочего, то можно воспользоваться сторонним сервисом, например mandrill.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы