【问题标题】:header location not redirecting after form submit表单提交后标题位置未重定向
【发布时间】:2014-11-06 07:28:30
【问题描述】:

您好,我的表单在提交后没有重定向到我的成功页面。消息确实通过了,我确实收到了测试电子邮件。但是,我的表单在发送电子邮件后不会重定向。我正在使用标头位置进行重定向。谁能帮我解决这个问题?

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@website.com";
$mail->Password = "password";

$mailto = "email@website.com";
$mailfrom = "email@website.com";
$mail->SetFrom($mailto, '');
$address = 'email@website.com';
$mail->AddAddress($address, "The Site Name");

$mail->Subject  = $subject;
$mail->AltBody  = $body;
$mail->MsgHTML($body);

if(!$mail->Send()) {
    Header("Location: success.php");
}
}

【问题讨论】:

  • 应该是if($mail-&gt;Send())而不是if(!$mail-&gt;Send())
  • 是的,邮件已发送,我收到了电子邮件
  • 是的。 .您收到了电子邮件,但您的条件是如果不是 (!$mail->Send()) 那就是

标签: php forms redirect header


【解决方案1】:

您正在检查错误的条件。如果邮件已发送,则重定向。所以应该是——

if($mail->Send()) {
    Header("Location: success.php");
    exit;
}

【讨论】:

  • header();之后不要忘记exit();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多