Привет, моя форма не перенаправляется на мою страницу успеха после отправки. Сообщение действительно проходит, и я получаю тестовые письма. Однако моя форма не перенаправляется после отправки электронного письма. Я использую заголовок для перенаправления. Кто-нибудь может мне с этим помочь?
require_once('class.phpmailer.php');
session_start();
function ValidateEmail($email) {
$pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
return preg_match($pattern, $email);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nameError = '';
if (empty($_POST["name"])) {
$nameError = 'You must enter a name.';
}
if (isset($_POST['captchaCode'],$_SESSION['random_txt']) && md5($_POST['captchaCode']) == $_SESSION['random_txt'])
{
unset($_POST['captchaCode'],$_SESSION['random_txt']);
} else {
echo 'captcha code was wrong';
exit;
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$subject = $_POST['subject'];
$body = <<< _END_
<html>
<body>
<div id="container">
<div id="logo">
<a href="http://www.website.com"><img src="images/website.png" alt="website"></a>
</div>
Name: {$_POST['name']} <br>
Phone: {$_POST['phone']} <br>
Email: {$_POST['email']} <br>
Message: {$_POST['message']} <br>
</div>
</html>
_END_;
// if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$mail = new PHPMailer;
// $mail->SMTPDebug = 2;
// print_r($_POST);
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.office365.com";
$mail->Port = 587;
$mail->Username = "[email protected]";
$mail->Password = "password";
$mailto = "[email protected]";
$mailfrom = "[email protected]";
$mail->SetFrom($mailto, '');
$address = '[email protected]';
$mail->AddAddress($address, "The Site Name");
$mail->Subject = $subject;
$mail->AltBody = $body;
$mail->MsgHTML($body);
if(!$mail->Send()) {
Header("Location: success.php");
}
}
Вы проверяете неправильное состояние. Если почта отправляется, то перенаправление. Так должно быть -
if($mail->Send()) {
Header("Location: success.php");
exit;
}
exit();
послеheader();
exit
чтобы остановить выполнение остальной части кода.