PHP联系表格垃圾邮件的问题
问题描述:
因此,最近我在我的网站上修复了我的联系表单,但是我遇到了问题。人们可以向我发送电子邮件,而无需在联系人表单框中添加任何内容。PHP联系表格垃圾邮件的问题
所以,大多数人只需按下发送按钮,而不需要输入任何真正烦人的东西。
无论如何解决这个问题?
这是我的PHP代码:https://hastebin.com/ukowawovab.pl
这是我的HTML代码:https://hastebin.com/hisayacuji.xml
谢谢! TrifleTower
答
正如我在评论中所述,检查任何空白字段。
即使添加了required
,漫游器可能正在直接访问php文件,或其他人。
<?php
if(!empty($_REQUEST['name'])
&& !empty($_REQUEST['email'])
&& !empty($_REQUEST['skype'])
&& !empty($_REQUEST['message'])){
$to = "[email protected]";
$subject = "FluxDesigns Contact Form";
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$skype = $_REQUEST['skype'];
$message = $_REQUEST['message'];
$ip = $_SERVER['REMOTE_ADDR'];
$body = " Name: $name \n Email: $email \n Skype: $skype \n Message: $message \n\n IP Address: $ip";
if (mail($to, $subject, $body)) {
header('Location: /thanks');
exit; // added that to prevent further execution
}
}
else{
echo "Fill in all fields";
}
你可以另加一个复选框,并检查它是否被设定为isset()
,并相应地处理它。
但是,您应该使用完整标题,如mail()
手册中所述。否则,您可能无法收到,也可能被视为垃圾邮件。
完整标题是指具有有效From
的电子邮件地址。从手动
例子:
<?php
$to = '[email protected]';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
您还应该创建一个SPF纪录,但已经超出了问题的范围。
把你的代码在这里,复选框不是空的(你似乎知道你应该这样做),添加CAPCHA – nogad
这其实是比你想象的简单。检查空值并使用完整标题 –
我已将我的HTML代码添加到线程。我很新的PHP,所以我不知道如何检查空值,并使用完整的标题等。 – TrifleTower