PHP联系人表单在发送电子邮件后拒绝重定向

PHP联系人表单在发送电子邮件后拒绝重定向,php,forms,email,redirect,Php,Forms,Email,Redirect,我有一个PHP联系人表单,可以在localhost上正常工作(向我的收件箱发送电子邮件并重定向到另一个页面)。但是,当我将其上传到liveserver并对其进行测试时,用户输入会被提交到我的电子邮件收件箱,但会在浏览器上显示输入,不会重定向到其他页面(谢谢页面)。我正在使用PHPMailer类发送表单 PHP表单 <?php session_start(); //INITIALIZE VARIABLES and set to empty values $name = $phone =

我有一个PHP联系人表单,可以在localhost上正常工作(向我的收件箱发送电子邮件并重定向到另一个页面)。但是,当我将其上传到liveserver并对其进行测试时,用户输入会被提交到我的电子邮件收件箱,但会在浏览器上显示输入,不会重定向到其他页面(谢谢页面)。我正在使用PHPMailer类发送表单

PHP表单

<?php session_start();

 //INITIALIZE VARIABLES and set to empty values
$name = $phone = $email = $message= $captchaResults= "";
$nameErr = $phoneErr = $emailErr = $checkboxErr= $messageErr= $captchaErr= "";

ini_set('display_errors', 1);
error_reporting(E_ALL);

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $valid = true;
    //check if name is empty and performs functions in curly brackets
    if (empty($_POST["name"])) {
       $valid = false;
       $nameErr = "Please fill out this field";
    } 
    else {
        //Passes name throught test input function at the bottom of page
         $name = test_input($_POST["name"]);
        //remove illegal characters from name , Sanitize data
        $nm =filter_var($name, FILTER_SANITIZE_STRING);
       // Validate Data
        if (!preg_match("/^[a-zA-Z\s,.-]{3,30}$/", $nm))          // Regexp requiring letters, spaces, commas and fullstops and should not exceed 30 letters
        {
            $valid = false;
            $nameErr = "Please don't insert numbers*";
        } 
    }

    //check if phone contains numbers
    if (empty($_POST["phone"])) {
        $valid = false;
        $phoneErr = "Please fill out this field";
    } 
    else {
        $phone = test_input($_POST["phone"]);
        if (!preg_match("/^[0-9\s(),+.-]*$/", $phone)) {

            $valid = false;
            $phoneErr = "Please don't insert letters*";
        }
    }

             //check if email is valid
    if (empty($_POST["email"])) {

        $valid = false;

        $emailErr = "Please fill out this field";
        echo'email is empty<br>';
    } 
    else {
        $email = test_input($_POST["email"]);
        //Remove all illegal characters from email
        $em = filter_var($email, FILTER_SANITIZE_EMAIL);

      if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $em))
        {
            $valid = false;
            $emailErr = "*Please insert a valid email address*";
        }
    }

        // Check the values from checkbox and POST them to email 
         $value= "";                                           
    //
     if (empty($_POST["checkbox"])) {

        $valid = false;
        $checkboxErr = "Please fill out this field*"; 

    }
    else{
        $checkbox =$_POST["checkbox"];                //Array of values from the checkbox values
            $value= implode(' , ', $checkbox);           //implode values and separate by a comma
                $value = test_input($value);
    } 

    //check if message contains letters and white-space
    if (empty($_POST["message"])) {
       $valid = false;
       $messageErr = "Please fill out this field";
        echo 'Message is empty<br>';
    } 
    else {
        $message = test_input($_POST["message"]);
        //remove illegal characters from url
          $msg =filter_var($message, FILTER_SANITIZE_STRING);

        if (!preg_match("/^[a-zA-Z\s-,:;`~.?()]*$/", $msg))       //Regexp requiring spaces, full-stops, colon, semi-colons brackets, question marks 
        {
            $valid = false;
            $messageErr = "Only letters and spaces are allowed*";
        } 
    }

    //Captcha Results
    $getRandomNumber1 = $_POST["firstRandomNumber"];
    $getRandomNumber2 = $_POST["secondRandomNumber"];
    $getCaptchaResults = $_POST["captchaResults"];

    $totalNumber= $getRandomNumber1 + $getRandomNumber2;

    if($totalNumber == $getCaptchaResults){
    echo'';
    }
    else{$valid = false; 
        $captchaErr="Wrong Answer";}

    //stores name in a session variable to be used in thank-you page    
    $_SESSION["nm"]= $nm;



    require ("PHPMailer/PHPMailerAutoload.php");                      //including phpmailer class

    $mail = new PHPMailer();

    $mail->IsSMTP();                                      // set mailer to use SMTP
    $mail->SMTPDebug = 2;
    $mail->Host = "gator4261.hostgator.com";            // specify main and backup server, 
    $mail->Port = 465;                                //Gmail SMTP port
    $mail->SMTPSecure = "ssl";                     // Connect using a TLS connection
    $mail->SMTPAuth = true;                         // turn on SMTP authorization
    $mail->Username = "info@myemailaccount.com";  // SMTP username
    $mail->Password = "****************";            // SMTP password

    $mail->From = "$em";                         //email of sender
    $mail->FromName = "$nm";                        //name of the sender
    $mail->AddAddress("info@myemailaccount.com", "Petfar Designers");        //email address of recepient and name
    $mail->AddReplyTo($em, $nm);                     //Address to which recepient will reply

    $mail->WordWrap = 100;                                   // set word wrap to 100 characters
    $mail->IsHTML(true);                                          // set email format to HTML
    $mail->Subject = "Contact  Form";    //subject of email

    $mail->Body = "Name: " . $nm . 
                  "<br>Phone: " . $phone . 
                  "<br>Email: " . $em .
                  "<br>Subject: " . $value .
                  "<br>Message: " . $msg ;


    //$mailphp = false;
    if ($valid) {

        // if (!$mailphp) {
        if (!$mail->Send()) {
            echo 'Form could not be sent.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;
            exit;
        } else {
            header('Location:thank_you.php');
        }
    }
}


function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);

    return $data;
}

?>

您始终可以使用来探测是否仍然可以。。。发送标题。这对于有条件地打印任何信息或应用回退逻辑非常有用

if (headers_sent()) {
    die(file_get_contents("thank_you.php"));
}
else{
    exit(header("Location: /user.php"));
}

您始终可以使用来探测是否仍然可以。。。发送标题。这对于有条件地打印任何信息或应用回退逻辑非常有用

if (headers_sent()) {
    die(file_get_contents("thank_you.php"));
}
else{
    exit(header("Location: /user.php"));
}

而不是使用headers
header('Location:thank_you.php');
使用
echo'location.replace(“thank_you.php”);


希望有帮助

而不是使用headers
header('Location:thank_you.php');
使用
echo'location.replace(“thank_you.php”);


希望有帮助

可能的副本如下所示:在页面顶部添加
ob_start()的可能副本如下所示:在页面顶部添加
ob_start()
if (headers_sent()) {
    die(file_get_contents("thank_you.php"));
}
else{
    exit(header("Location: /user.php"));
}