所以最近我在我的网站上修改了我的联系表格,但我遇到了问题。人们可以向我发送电子邮件,而无需在联系表格框中添加任何内容。
所以很多人只需按下发送按钮,无需键入任何真正烦人的东西。
无论如何解决这个问题?
这是我的PHP代码:https://hastebin.com/ukowawovab.pl
以下是我的HTML代码:https://hastebin.com/hisayacuji.xml
谢谢! TrifleTower
答案 0 :(得分:1)
正如我在评论中所述,检查任何空白字段。
即使添加了required
,机器人也可能直接访问php文件或其他人。
<?php
if(!empty($_REQUEST['name'])
&& !empty($_REQUEST['email'])
&& !empty($_REQUEST['skype'])
&& !empty($_REQUEST['message'])){
$to = "email@example.com";
$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 = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
您还应该创建一个SPF记录,但这超出了这个问题的范围。