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