PHP邮件错误:第12行出现解析错误


PHP mail error: parse error on line 12

当我运行它时,它说"PHP语法检查:分析错误:语法错误,在代码的第12行出现意外的‘}’-

if(mail({$success==true};

PHP

$to = "Admin@mywebsite.com";
$subject = $_POST["Subject"];
$message = 'Hello World!';
$headers = 'From: User@Yourwebsite.com' . "'r'n" .
  'Reply-To: ' . $_POST["Email_From"] . "'r'n" .
  'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
if(mail) {$success == true};
else {$success = false};
if($success){print "<meta http-equiv="refresh" content="0;URL=thanks.html">"};
else{print "<meta http-equiv="refresh" content="0;URL=error.html">"};

您有很多语法问题。这是清理后的代码:

$to = "Admin@mywebsite.com";
$subject = $_POST['Subject'];
$message = 'Hello World!';
$headers = 'From: User@Yourwebsite.com' . "'r'n" .
  'Reply-To: ' . $_POST['Email_From'] . "'r'n" .
  'X-Mailer: PHP/' . phpversion();
$mail_result = mail($to, $subject, $message, $headers);
if ($mail_result) {
  $success = true;
}
else {
  $success = false;
}
if($success){
  print '<meta http-equiv="refresh" content="0;URL=thanks.html">';
}
else{
  print '<meta http-equiv="refresh" content="0;URL=error.html">';
}

首先,您的错误显示为:

"PHP语法检查:分析错误:语法错误,在第12行的代码中出现意外的‘}’

这是哪一行:

if(mail) {$success == true};

两个主要问题。首先检查mail,它不是定义的常量,甚至不是变量。这应该类似于我在名称前面用($(设置$mail_result。那么你的$success == true任务就不是任务。==严格意义上是一个比较算子;它应该是用于分配的CCD_ 6。然后,在赋值的末尾没有;,但它出现在大括号之外。就语法而言,这是不正确的。我把整个区块改成:

$mail_result = mail($to, $subject, $message, $headers);
if ($mail_result) {
  $success = true;
}
else {
  $success = false;
}

现在$mail_result作为布尔值连接到mail()。然后if()对此进行检查。$success现在用=设置正确的分配,并且该行以;结束。

然后这两行也充满了语法问题:

if($success){print "<meta http-equiv="refresh" content="0;URL=thanks.html">"};
else{print "<meta http-equiv="refresh" content="0;URL=error.html">"};

您的;问题与上一个问题相同。但是,字符串包含的双引号("(与用于<meta…标记的双引号冲突。因此,在这里使用单引号('(作为字符串包含&格式化。

if($success){
  print '<meta http-equiv="refresh" content="0;URL=thanks.html">';
}
else{
  print '<meta http-equiv="refresh" content="0;URL=error.html">';
}

但现在代码工作了,考虑$mail_result设置和$success检查可能是有意义的,如下所示:

$mail_result = mail($to, $subject, $message, $headers);
if($mail_result){
  print '<meta http-equiv="refresh" content="0;URL=thanks.html">';
}
else{
  print '<meta http-equiv="refresh" content="0;URL=error.html">';
}

mail()返回时,分配truefalse没有多大意义。

也就是说,根据您的最终代码目标,您可能不需要<meta http-equiv="refresh"…。从表面上看,你可以在PHP中使用header函数来获得更好的效果。

$mail_result = mail($to, $subject, $message, $headers);
if($mail_result){
  header('Location: thanks.html');
}
else{
  header('Location: error.html');
}