私はこの投稿を読みました:良い目に見えないキャプチャとは何ですか?Webフォームの非表示フィールドを使用して、基本的なボットがWebサイトのフォームメールを介してスパムメールでWebサイトを攻撃するのを防ぐ方法について。現在、フォームメールの処理にphpスクリプトを使用しています。見つけた「bulletproffwebform」チュートリアルに従ってスクリプトを作成しました。次のようになります。
<?php
// Pick up the form data and assign it to variables
$name = $_POST['name'];
$email = $_POST['email'];
$topic = $_POST['topic'];
$comments = $_POST['comments'];
// Build the email (replace the address in the $to section with your own)
$to = 'hello@cipherbunny.com';
$subject = "New message: $topic";
$message = "$name said: $comments";
$headers = "From: $email";
// Data cleaning function
function clean_data($string) {
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
$string = strip_tags($string);
return mysql_real_escape_string($string);
}
// Mail header removal
function remove_headers($string) {
$headers = array(
"/to\:/i",
"/from\:/i",
"/bcc\:/i",
"/cc\:/i",
"/Content\-Transfer\-Encoding\:/i",
"/Content\-Type\:/i",
"/Mime\-Version\:/i"
);
$string = preg_replace($headers, '', $string);
return strip_tags($string);
}
// Pick up the cleaned form data
$name = remove_headers($_POST['name']);
$email = remove_headers($_POST['email']);
$topic = remove_headers($_POST['topic']);
$comments = remove_headers($_POST['comments']);
// Send the mail using PHPs mail() function
mail($to, $subject, $message, $headers);
// Redirect
header("Location: http://foobar/success.html");
このスクリプトを変更して、識別子「other_email」の非表示フィールドに入力した場合に、フォームの電子メールが送信されないようにします。上記のコードをifステートメントでラップして、フィールドが完全かどうかを確認するのと同じくらい簡単だと思います。「//フォームデータを取得して変数に割り当てる」コードの下にこれを追加してみました。
$testBot = $_POST['other_email'];
次に書く:
if(other_email == "") //If other_email form section is blank then...
{
run all the code above inserted here;
}
else
{
Don't know what I should put here to stop it posting, yet still show the success form so
the spam bot don't know
}
どんな助けでも大歓迎です。私はPHPの知識があまりないので、それについて学び始めたばかりで、フォームメールが良いスタートになると思いました。
PHPでこれを機能させるにはどうすればよいですか?