PHP联系表单垃圾邮件问题

时间:2017-02-26 22:30:35

标签: php forms contact email-spam

所以最近我在我的网站上修改了我的联系表格,但我遇到了问题。人们可以向我发送电子邮件,而无需在联系表格框中添加任何内容。

所以很多人只需按下发送按钮,无需键入任何真正烦人的东西。

无论如何解决这个问题?

这是我的PHP代码:https://hastebin.com/ukowawovab.pl

以下是我的HTML代码:https://hastebin.com/hisayacuji.xml

谢谢! TrifleTower

1 个答案:

答案 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记录,但这超出了这个问题的范围。