2

私はウェブサイトを構築しましたが、誰かが私にメッセージを送信できるように、ウェブページに電子メールの連絡フォームを作成したいと思います。

私はこのウェブサイトのコードを使用しています:http ://www.w3schools.com/php/php_secure_mail.asp

PHPが電子メールの挿入を停止するという部分を使用しています

私のサイトは1日あたりのヒット数が非常に少ない(訪問者が10人未満など)にもかかわらず、件名に関係のないランダムなメッセージを送信しているように見える「スパマー」から毎日3〜4件のメッセージを受け取っていることがわかりました。ウェブサイトの問題。

私はこれらすべてにかなり慣れていないので、質問したいと思います。PHPの電子メールフォームがスパムを引き付けるのはなぜですか。それを阻止するにはどうすればよいですか。

理想的には、実際のユーザーができるだけ簡単に連絡できるようにしたいのですが、可能であればCAPTCHAを使用する必要がない場合はそれを希望します。

本当にありがとう

私が使用しているコード:

<html>
<body>
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);

  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
  $mailcheck = spamcheck($_REQUEST['email']);
  if ($mailcheck==FALSE)
    {
    echo "Invalid input";
    }
  else
    {//send email
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    mail("someone@example.com", "Subject: $subject",
    $message, "From: $email" );
    echo "Thank you for using our mail form";
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='mailform.php'>
  Email: <input name='email' type='text'><br>
  Subject: <input name='subject' type='text'><br>
  Message:<br>
  <textarea name='message' rows='15' cols='40'>
  </textarea><br>
  <input type='submit'>
  </form>";
  }
?>

4

1 に答える 1

10

ほとんどのスパマーを取り除く簡単な方法があります:

フォーム内に入力フィールドをdisplay: none;スタイルとして出力します。理想的には、それは外部のcssファイルで指定されています。

その入力フィールドをフォーム内に配置し、「name2」などの重要な名前を付けます。

次に、入力を評価するときに、そのフィールド内に値を持つすべてのリクエストを破棄します。これは、実際のユーザーは値を表示できず、したがって値を入力できないためです。一方、スパムボットはページ上で見つけたすべてのフィールドに入力する可能性があります。

于 2013-03-26T12:28:58.810 に答える