我在下面的代码中遇到的错误是:
解析错误:语法错误,意外$ end
HTML CODE:
<form style="margin-left:auto;margin-right:auto; text-align:center;" action="contactus.php" method="post">
<label for="name">
Namn/Företag
<input type="text" name="name" placeholder="Skriv in erat namn/företag här">
</label><br>
<label for="email">
E-mail
<input type="text" name="email" placeholder="Skriv in erat namn/företag här">
</label><br>
<label for="amne">
Ämne
<input type="text" name="amne" placeholder="Skriv in ämnet här">
</label><br>
<label for="message">
Meddelande
<br>
<textarea name="message" placeholder="Skriv in meddelandet här" rows="20" cols="70">
</textarea><br>
<input type="submit" value="Skicka">
</label><br>
</form>
PHP SCRIPT:
<?php
$emailSubject = $_POST['amne'];
$webMaster = $_POST['info@example.com'];
$nameField = $_POST['name'];
$emailField = $_POST['email'];
$amneField = $_POST['amne'];
$messageField = $_POST['message'];
$body = <<<EOD
<br>
<hr>
<br>
Namn: $name <br>
E-mail: $email <br>
Amne: $amne <br><br>
Meddelande: $message <br>
EOD;
$headers = "Fran: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail($webMaster, $emailSubject, $body, $headers);
echo = "Ditt meddelande har skickats";
?>
有人可以解释为什么会这样吗?谢谢!
答案 0 :(得分:2)
确保此声明:
EOD;
前面没有任何空格。看起来你有代码缩进,并允许在EOD前面的那个空格
此外,虽然您没有提出要求,但您还需要改变这一点:
echo = "Ditt meddelande har skickats"
到此:
echo "Ditt meddelande har skickats";
答案 1 :(得分:2)
这里有一些问题; heredoc和这个$headers = "Fran: $email\r\n";
我相信您的语言Fran
看起来像瑞典语,意味着&#34;来自&#34;。
但是使用mail()
- PHP,语法在任何给定的口语中保持不变,因此它必须在标题中以From:
读取,因此我已修复了代码如下。
仅通过修复heredoc语法,邮件的标题就不会注册正确的&#34; From&#34;地址,最有可能最终进入,并标记为垃圾邮件。
至于heredoc:
{{3}周围不应该有任何空格,或任何(包括标签,或任何隐藏字符,例如* unicode等&lt; =参见脚注) } delimeters。
在这里,完全按照所示进行复制:
<?php
$emailSubject = $_POST['amne'];
$webMaster = $_POST['info@example.com'];
$nameField = $_POST['name'];
$emailField = $_POST['email'];
$amneField = $_POST['amne'];
$messageField = $_POST['message'];
$body = <<<EOD
<br>
<hr>
<br>
Namn: $name <br>
E-mail: $email <br>
Amne: $amne <br><br>
Meddelande: $message <br>
EOD;
$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail($webMaster, $emailSubject, $body, $headers);
echo "Ditt meddelande har skickats";
?>
旁注(编辑):不应该是等号:
echo = "Ditt meddelande har skickats";
^ remove it
我以为我也修好了。
阅读heredoc:
<强>脚注:强>
*关于unicode字符:某些unicode字符有时可以被发现/意外/不知不觉地嵌入并且几乎未被发现,所以要小心/注意那些,因为这也会导致heredoc失败。我以前见过这种情况。
虽然这不是这种情况,但是如果将来发生意外的类似错误并且您看不到隐藏的unicode,则应该了解它。
但是,IDE /代码编辑可以看到这些代码。
答案 2 :(得分:0)
有两个错误,其中一个可能是由Stackoverflow的textarea造成的:
EOD;
)=
之后echo
,echo "Ditt meddelande har skickats";