Поэтому я пытаюсь сделать перенаправление после отправки формы на домашнюю страницу. Хорошо, работает НО есть одна проблема. Сообщение не отображается, когда пользователь нажимает кнопку «Отправить», но мгновенно перенаправляется на главную страницу. Как сделать так, чтобы пользователи сначала получали сообщение «Спасибо», а затем перенаправлялись на главную страницу?

<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];

$mail_to = 'vladozabunov@gmail.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
  <script language="javascript" type="text/javascript">
    alert('Thank you for the message. We will contact you shortly.');
    window.location = 'contact_page.html';
  </script>
  <?php
}
else { ?>
    <script language="javascript" type="text/javascript">
      alert('Message failed. Please, send an email to gordon@template-help.com');
      window.location = 'contact_page.html';
    </script>
    <?php
}
header('Location: https://saprs.000webhostapp.com/index.html');
?>
0
user8182483 19 Июн 2017 в 13:29
Поместите благодарность на странице, на которую вы перенаправляетесь
 – 
RiggsFolly
19 Июн 2017 в 13:30
Вы не можете использовать header () после эха / вывода
 – 
A. Blub
19 Июн 2017 в 13:32
Обратите внимание, что я совершенно новичок в этом, поэтому могу много чего напортачить.
 – 
user8182483
19 Июн 2017 в 13:36

4 ответа

Пожалуйста, сделайте это с помощью jQuery и ajax.

HTML и jQuery:

 <!DOCTYPE html>
    <html>
    <head>
        <title>Contact Form</title>
        <script src="//code.jquery.com/jquery-1.9.1.js"></script>
        <script type="text/javascript">
            function submitForm() {
             //Do validation and submit form
                $.ajax({
                  url: "mail.php",
                  type: "POST",               

                }).done(function( data ) {
                    alert(data);
                     if(data==1){
                         alert('Success');
                         window.location.href = 'test.php';//Your location 
                     }
                     else
                     {
                         alert('failed'); 
                     }
                });
                return false;
            }
        </script>
    </head>
    <body>
        <form method="post" id="mailData" name="mailData" onsubmit="return submitForm();">
            <label>Contact Form:</label><br>        
            <input type="submit" value="Submit" />
        </form>
        <div id="output"></div>
    </body>
</html>

Серверный PHP-код:

<?php
$mail_to = 'vladozabunov@gmail.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { 
   echo 1;
}
else { 
   echo 0;  
}

?>
1
marc_s 28 Июн 2017 в 06:31
$mail_to = 'vladozabunov@gmail.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);
if($mail_status == true){
    echo "<script>alert('Thank you for the message. We will contact you shortly.');</script>";
    header('Location:https://saprs.000webhostapp.com/contact_page.html');
}else{
    echo "<script>alert('Sorry! Please try again.');</script>";
    header('Location:https://saprs.000webhostapp.com/contact_page.html');
}
0
Avinash Kumar Singh 19 Июн 2017 в 13:34

Просто удалите заголовок из своего кода и замените следующим

$mail_to = 'vladozabunov@gmail.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
 <script language="javascript" type="text/javascript">
  alert('Thank you for the message. We will contact you shortly.');
  window.location.href = 'index.html';
 </script>
 <?php
 }else { ?>
  <script language="javascript" type="text/javascript">
   alert('Message failed. Please, send an email to gordon@template-help.com');
   window.location.href = 'contact_page.html';
  </script>
 <?php } ?>
0
Ankit Singh 19 Июн 2017 в 13:37
Когда я использую это, я получаю эту ошибку: Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '}', ожидая конца файла в /storage/ssd2/729/2009729/public_html/contact.php в строке 19
 – 
user8182483
19 Июн 2017 в 13:56
Вы уверены, что начинаете свой код с <?php? в противном случае добавьте <?php в самом начале кода.
 – 
Ankit Singh
19 Июн 2017 в 14:02
Я добавил <? Php, и теперь он говорит: «Сообщение не удалось», показывает «Неопределенная переменная: body_message в X / в строке местоположения 6 и 7, то же самое для строк field_message 9 и 10, field_email, mail_to и темы в строке 12.
 – 
user8182483
19 Июн 2017 в 14:08
Не могли бы вы обновить свой полный код для лучшего понимания?
 – 
Ankit Singh
19 Июн 2017 в 14:11

Заменить

header('Location: https://saprs.000webhostapp.com/index.html');

С участием

echo "<script type='text/javascript'>window.location.href='https://saprs.000webhostapp.com/index.html'</script>";
0
Nagesh Katke 19 Июн 2017 в 14:00
Да, но это просто показывает сообщение, а затем каким-то образом отключает всю страницу и показывает только форму, снова и ничего, вместо перехода на домашнюю страницу.
 – 
user8182483
19 Июн 2017 в 14:13
Какое сообщение он показывает и успешно выполняет съемку почты.
 – 
Nagesh Katke
19 Июн 2017 в 14:19
Показывает, что письмо было отправлено, оно отправляет письмо, но затем снова перенаправляет на ту же страницу, но видна только форма.
 – 
user8182483
19 Июн 2017 в 14:27
Затем попробуйте это if ($mail_status) { echo "<script type='text/javascript'>window.location.href='https://saprs.000webhostapp.com/index.html'</script>"; } else { echo "<script type='text/javascript'>window.location.href='contact_page.html'</script>"; } Не добавляйте перенаправление после этого.
 – 
Nagesh Katke
19 Июн 2017 в 14:34
Там написано: 404. Это ошибка. Запрошенный URL не был найден на этом сервере. Извините, я действительно глуп, никогда раньше не работал с php.
 – 
user8182483
19 Июн 2017 в 14:38