shalfei111
@shalfei111
учусь усердно

Как вывести сообщение об успешной отправки письма через alert js, но при этом и отправить заголовок с перенаправлением?

добрый день!
помогите пожалуйста собрать всё воедино.

проблема 1:
при заполнении формы по submit отправляется письмо с запросом с данными из формы. если обновлять страницу - письмо будет отправляться опять и опять. это удалось решить отправкой заголовка с перенаправлением на текущую страницу:
$url = $_SERVER['REQUEST_URI'];
//header("Location: $url");


проблема 2: хочется вывести сообщение пользователю, о том, что запрос успешно отправлен, но в этом случае заголовки отправляются раньше и перенаправление уже сделать не получается.

Ниже код, отправка заголовка закомментирована. Если раскомментировать, получится ошибка с предупреждением, что заголовки уже отправлены, и по обновлению страницы письмо будет отправляться снова и снова с введенными ранее данными.

if (mail($mail_to, $subj, $body, "From: $from")) {
$mail_result = 'Ваш запрос отправлен. В ближайшее время мы свяжемся с Вами. Спасибо!';
echo " < script > alert( '$mail_result' ); < / script >";
$url = $_SERVER['REQUEST_URI'];
//header("Location: $url");
}


Вопрос - возможно ли вообще отправить заголовки после того, как будет выведен alert?
Пробовала выводить его вначале скрипта PHP, с проверкой "если длина $mail_result больше нуля, то вывести echo "";)
Но такой подход ничего не даёт, т.е. получается когда мы полностью перезагружаем страницу отправкой заголовка скрипт отрабатывает заново, а в его начале $mail_result еще не существует.
Что делать? Как и рыбку съесть и.. косточкой не подавиться?
  • Вопрос задан
  • 760 просмотров
Решения вопроса 1
@entermix
Вопрос - возможно ли вообще отправить заголовки после того, как будет выведен alert?

Нет

Пишите сообщение в сессию например и выводите после редиректа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

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

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