当我运行它时,它说" PHP语法检查:解析错误:语法错误,意外'}'在第12行的代码中 -
if(mail){$ success == true};
$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">"};
答案 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">';
}
分配true
或false
时,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');
}