限制每秒/分钟的联系表单电子邮件

时间:2012-08-09 11:59:47

标签: php javascript jquery

我最近创建了一个投资组合网站并将其放在000webhost.com上。今天,当我登录时,该帐户被暂停,因为有人通过我的联系表单一分钟发送了超过70封电子邮件 - 这是虚拟主机不允许的。

我正在寻找一些方法来阻止这种情况再次发生。我使用php和javascript / jquery进行表单验证。

这是我最好的PHP验证码。

$firstName = $_POST["firstName"];
$lastName = $_POST["lastName"];
$email = $_POST["email"];
$message = $_POST["message"];
$to = "fox.team001@gmail.com";
$subject = $firstName . " " . $lastName;
$headers = "From: " .$firstName . " " . $lastName . "\r\nReply-To:" . $email;

 if(validateEmail($email)){
     @mail($to , $subject , $message , $headers);

 }

validate($firstName , $lastName , $email , $message);
function validate ($firstName , $lastName , $email , $message){
    if(!empty($firstName) && !empty($lastName)  && !empty($email) && !empty($message)){
        if(validateEmail($email)){
            header("refresh:5; url=http://www.foxteam.net");
        }else{
           header("refresh:0; url=http://www.foxteam.net/contact.php");
        }
    }else{
       header("refresh:0; url=http://www.foxteam.net/contact.php");
    }
}   
function validateEmail($email) {
    $pattern = "^[A-Za-z0-9_\-\.]+\@[A-Za-z0-9_\-]+\.[A-Za-z0-9]+$";
    if(preg_match("/{$pattern}/", $email)) {
        return true;
    }else{
        return false;
    }
}

有谁能告诉我如何阻止垃圾邮件发送者发送垃圾邮件?

3 个答案:

答案 0 :(得分:3)

很难通过联系表单完全阻止垃圾邮件,但是您可以使用多种方法来减少垃圾邮件,其中一些方法包括:

  1. 使用蜜罐 - 这背后的想法是在表单上使用通用名称(例如answer)隐藏字段,如果此字段中包含任何内容,则不要打扰发送电子邮件(但仍然告诉用户电子邮件已经发送) - 这显然是垃圾邮件,因为没有其他方式可以填写该字段。
  2. IP限制 - 将用户的IP地址存储在某处,并限制每个IP地址可以发送的每分钟/小时的电子邮件数。
  3. Word过滤 - 有一个单词列表,如果找到任何单词,则不发送电子邮件(通常使用 viagra penis 等等。)
  4. CAPTCHA ,对我而言,这是最后的选择。如果您确实使用了recaptcha,那么它是迄今为止最好的一个。但正如我所说,使用它作为最后的手段,你可以使用许多其他方法,而不会烦扰你的网站用户。

答案 1 :(得分:2)

您可以使用CAPTCHA阻止机器人垃圾邮件发送者

答案 2 :(得分:0)

if()条件放入包含范围70的for循环中,然后仅发送电子邮件。如果超过70,则将其置于 else 部分并附上一些合适的消息

由于