答案 0 :(得分:4)
这是因为这一行: (请参阅我的脚注)
"Message:\n $message\n".
你有一个点而不是一个(结束)分号;
修改:您需要从form="contactForm"
删除<textarea>
。在测试时,它与邮件一起使用时没有显示。
并且错误报告会告诉你它。
存在:
注意:未定义的索引:信息(第8行)
和
注意:未定义的变量:visitor_email(第26和55行)
两者:
$headers .= "Reply-To: $visitor_email \r\n";
和
if(IsInjected($visitor_email))
您的代码中未定义 $visitor_email
。您应该使用$email
代替$visitor_email
的所有实例。
然后您for=""
<{1}}似乎不是<textarea...
for=""
不明确。
参考:https://developer.mozilla.org/en/docs/Web/HTML/Element/textarea
您还应该检查带有条件!empty()
的空字段。
<强>脚注:强>
经过更深入的测试,关于我上面提到的点,我必须说明以下内容:
奇怪的是,PHP认为它是有效的语法,因为这里有一个分号并包含在这里$to = "clientemail@gmail.com";
这样做仍然是发送邮件,但也包含在电子邮件中,明确没有包含在$email_body
变量正文中。
因此,我的回答的第一部分在某种程度上是正确的,form="contactForm"
是这里的罪魁祸首。
id="contactForm"
或类class="contactForm"
。两者都可以使用,并将其包含在您的邮件中。但是,由于name="contactForm"
拥有该命名属性,您将无法使用<form>
。
name
和id
属性都是(意味着)唯一。答案 1 :(得分:3)
从form="contactForm"
移除<textarea>
。我删除了它。而且,它开始工作。
替换
<textarea for="" name="information" width="100%" rows="10" form="contactForm"></textarea>
到
<textarea for="" name="information" width="100%" rows="10"></textarea>
或者,
根据 HTML5 ,您可以在form
中使用id's
input
。因此,取代form="contactForm"
使用form="contact"
。
更改
<textarea for="" name="information" width="100%" rows="10" form="contactForm"></textarea>
要
<textarea for="" name="information" width="100%" rows="10" form="contact"></textarea>
有关详情,请查看textarea - attributes