那是因为这一行:(请参阅我的脚注)
"Message:\n $message\n".
你有一个点而不是(结束)分号;
Edit:你需要删除form="contactForm"
from <textarea>
。经测试,与它一起使用时,它没有显示在邮件中。
错误报告会告诉你这一点。
- http://php.net/manual/en/function.error-reporting.php http://php.net/manual/en/function.error-reporting.php
Being:
注意:未定义索引:信息(第 8 行)
and
注意:未定义的变量:visitor_email(第 26 和 55 行)
In both:
$headers .= "Reply-To: $visitor_email \r\n";
and
if(IsInjected($visitor_email))
$visitor_email
在您的代码中未定义。你应该用过$email
而对于所有实例$visitor_email
.
那么你就有了for=""
这似乎不是您的有效语法<textarea...
That for=""
是模棱两可的。
Ref: https://developer.mozilla.org/en/docs/Web/HTML/Element/textarea https://developer.mozilla.org/en/docs/Web/HTML/Element/textarea
您还应该检查带有条件的空字段!empty()
.
- http://php.net/manual/en/function.empty.php http://php.net/manual/en/function.empty.php
脚注:
经过更深入的测试,对于我上面提到的点,我必须声明以下几点:
奇怪的是,PHP 认为它是有效的语法,因为这里有一个分号并包含在末尾$to = "[email protected] /cdn-cgi/l/email-protection";
所做的仍然是发送邮件,BUT还包括在电子邮件中,这显然不包含在$email_body
可变体。
因此,我的回答的第一部分在某种程度上是正确的,form="contactForm"
是这里的罪魁祸首。
- 您可能想使用 ID
id="contactForm"
或一个班级class="contactForm"
。两者均可有效使用并将其包含在您的邮件中。
但是,您将无法使用name="contactForm"
自从你的<form>
保存该命名属性。
- 这俩
name
and id
属性是(注定是)唯一的。