0

私は最近、ポートフォリオのウェブサイトを作成し、オンラインに掲載しました000webhost.com。今日ログインしたとき、誰かが私の連絡先フォームから 1 分間に 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;
    }
}

スパマーがスパムメールを送信するのを止める方法を誰か教えてもらえますか?

4

3 に答える 3

3

お問い合わせフォームからのスパムを完全に阻止することは非常に困難ですが、スパムを減らすために使用できる方法はいくつかあります。

  1. ハニーポットを使用する- この背後にあるアイデアは、フォームに一般的な名前 (例: answer) の非表示フィールドを作成することです。このフィールドに何かが含まれている場合は、わざわざメールを送信しないでください (ただし、ユーザーにはメールがが送信されました) - フィールドに入力する方法が他にないため、明らかにスパムです。
  2. IP 制限- ユーザーの IP アドレスをどこかに保存し、各 IP アドレスが送信できる 1 分/時間あたりの電子メール数を制限します。
  3. 単語のフィルタリング- 単語のリストを用意し、見つかった場合はメールを送信しないでください (通常、バイアグラペニスなどの単語)。
  4. CAPTCHA、私にとって、これは最後の手段です。使用する場合はrecaptchaを実装してください。しかし、私が言うように、これは最後の手段として使用してください。Web サイトのユーザーを煩わすことなく使用できる方法は他にもたくさんあります。
于 2012-08-09T12:17:04.203 に答える
2

CAPTCHAを使用して、ロボット スパマーをブロックできます

于 2012-08-09T12:02:03.633 に答える
0

if()条件を範囲 70 を含む for ループに入れてから、電子メールのみを送信します。70までにオーバーする場合は、の部分に適切なメッセージを付けて上に置きます

ありがとう

于 2012-08-09T12:03:14.883 に答える