user8182483
user8182483

Reputation:

How can I make php redirect after email message was sent?

So I am trying to make redirection after submitting the form to the home page. Fine, it works BUT there is one problem. The message is not displayed as user presses "Submit" button but is instantly redirected to the Home page. How can I make it so users first recieve "Thank you" message and than are redirected to the Home page?

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

$mail_to = '[email protected]';
$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 [email protected]');
      window.location = 'contact_page.html';
    </script>
    <?php
}
header('Location: https://saprs.000webhostapp.com/index.html');
?>

Upvotes: 0

Views: 10461

Answers (4)

user1752065
user1752065

Reputation: 179

Please do it with jQuery and ajax.

HTML and 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>

Server-side PHP code:

<?php
$mail_to = '[email protected]';
$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;  
}

?>

Upvotes: 1

Nagesh Katke
Nagesh Katke

Reputation: 578

Replace

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

with

echo "<script type='text/javascript'>window.location.href='https://saprs.000webhostapp.com/index.html'</script>";

Upvotes: 0

Ankit Singh
Ankit Singh

Reputation: 1477

just remove the header from your code and replace with following

$mail_to = '[email protected]';
$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 [email protected]');
   window.location.href = 'contact_page.html';
  </script>
 <?php } ?>

Upvotes: 2

Avinash Kumar Singh
Avinash Kumar Singh

Reputation: 117

$mail_to = '[email protected]';
$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');
}

Upvotes: 0

Related Questions