При отправке формы вывести на экран окно “Заявка отправлена”

518
20 февраля 2017, 12:36

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

<div class="popup reg_form">
    <a class="close" href="#">&times;</a>
    <h2>ОТПРАВИТЬ ЗАЯВКУ</h2>
    <form id="contactForm" class="contact-form" method="post" action="contact_mailer.php">
                                    <div class="form-group form-icon-group">
                                        <input class="form-control" name="name" id="name" placeholder="Ваше Имя*" type="text" required>
                                        <i class="fa fa-user"></i>
                                    </div>
                                    <div class="form-group form-icon-group">
                                        <input class="form-control" name="email" placeholder="Ваш e-mail*" type="email" required>
                                        <i class="fa fa-envelope"></i>
                                    </div>
                                    <div class="form-group form-icon-group">
                                        <input class="form-control" name="phone" placeholder="Контактный телефон*" type="text" required>
                                        <i class="fa fa-phone"></i>
                                    </div>
                                    <div>
                                        <input type="submit" value="Отправить заявку" class="btn btn-danger scroll-to-id ">
                                    </div>
    </form>

<?php
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['email'])&&$_POST['email']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){
$to = 'godofwar9325@gmail.com'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p><b>Имя:</b> '.$_POST['name'].'</p>
                        <p><b>Телефон:</b> '.$_POST['phone'].'</p> 
                         <p><b>Почта:</b> '.$_POST['email'].'</p>                         
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <uber-key.ru>\r\n"; //Наименование и почта отправителя
        mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail

}?>


<?php
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['email'])&&$_POST['email']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){
$to = 'godofwar9325@gmail.com'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p><b>Имя:</b> '.$_POST['name'].'</p>
                        <p><b>Телефон:</b> '.$_POST['phone'].'</p> 
                         <p><b>Почта:</b> '.$_POST['email'].'</p>                         
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <uber-key.ru>\r\n"; //Наименование и почта отправителя
        mail($to, $subject, $message, $headers);
     if(mail(@params)){ //та самая проверка ответа mail(); из коммента
    header('Location: uber-key.ru/index.html');
}else{
    header('Location: uber-key.ru/failed.html');
}
index.html
  echo 'main send successfully';
failed.html
   echo 'main didnt send becouse of ...';

}?>
Answer 1

После строки mail($to, $subject, $message,...... Добавить echo "<h2>Заявка отправлена</h2>";

Answer 2

В вашем случае есть несколько способов решения поставленной задачи.

Первый и самый очевидный (но не самый лучший) - перенаправление пользователя после отправки письма на страницу сообщения об удачной или неудачной отправке. Обычно это реализуют так:

if(mail(@params)){ //та самая проверка ответа mail(); из коммента
    header('Location: http://yoursite.com/success.html');
}else{
    header('Location: http://yoursite.com/failed.html');
}
success.html
  echo 'main send successfully';
failed.html
   echo 'main didn't send becouse of ...';

Можете так же возвращаться на исходную страницу (где заполняли форму) с get-маркером отправки письма:

if(mail(@params)){
    header('Location: http://where_you_came_from.com?m=1');
}

Тогда в исходном файле будете проверять $_get:

if($_get && isset($_get['m'])){ 
    echo ($_get['m']) ? 'блок с сообщением об отправке письма' : 'блок с сообщением об ошибке отправки'.
}

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

Второй способ обработки - ajax, это js. Очень рекомендую изучать.

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

READ ALSO
оповещение о покупке на емайл?

оповещение о покупке на емайл?

Требуется создать универсальный макет html письма для автоматических рассылок интернет-магазиновТакое письмо будет приходить пользователю,...

318
JS получение данных с input и отправка на почту

JS получение данных с input и отправка на почту

Добрый деньРеализовываю отправку данных с input формы на почту

383
Почему onmousemove даёт неправильные координаты?

Почему onmousemove даёт неправильные координаты?

Добрый день, если вести курсор мыши вверх и влево, то координаты отображаются верно, если вести мышь вниз и вправо, то скрипт вставляет через...

307
Кроссбраузерность сайта

Кроссбраузерность сайта

Столкнулся с проблемой кроссбраузерности сайта, в браузере safari не отображаются изображенияПроверили с нескольких маков, проблема подтвердилась

345