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

时间:2014-06-16 22:31:07

标签: php email syntax-error

当我运行它时,它说" 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">"};

1 个答案:

答案 0 :(得分:3)

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

$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">';
}

首先,您的错误显示为:

  

“第12行代码中的”PHP语法检查:解析错误:语法错误,意外'}'

这一行:

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

两个主要问题。首先,您要检查mail,它不是已定义的常量,甚至不是变量。这应该类似于我在名称前面设置$mail_result和($)的内容。然后,您$success == true的分配不是作业。 ==严格来说是一个比较运算符;分配应该是=。然后在作业结束时没有;,但它出现在大括号之外。语法明智,这是不正确的。我将整个块改为:

$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…标记的双引号冲突。所以在这里使用单引号(')作为字符串包含&amp;格式也是如此。

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">';
}

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

而且,根据您的最终代码目标,您可能不需要<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');
}