ニュースレター フォームの購読をめぐって、将来のボット スパマーと戦っています。フォームをシンプルに保ち、手順を高速化したいので、ボットをトラップするためにキャプチャではなく隠しフォームを使用します。
それは効率的ですか、それともボットは非表示のフォームを認識する方法を知っていて、それをバイパスしますか?
ニュースレター フォームの購読をめぐって、将来のボット スパマーと戦っています。フォームをシンプルに保ち、手順を高速化したいので、ボットをトラップするためにキャプチャではなく隠しフォームを使用します。
それは効率的ですか、それともボットは非表示のフォームを認識する方法を知っていて、それをバイパスしますか?
少なくとも今のところ、ボットは CSS や JavaScript の読み取りに苦労しています。
キャプチャなしでボット スパムを防止する方法は次のとおりです。
<form method="post" action="send.php">
<ol>
<li>
<label for="name">Name</label>
<input type="text" name="name" value="">
</li>
<li>
<label for="email">Email</label>
<input type="text" name="email">
</li>
<!-- We hide this with CSS,that's why it has an ID. -->
<li id="user">
<label for="username">Username</label>
<input type="text" name="username">
</li>
<!-- //end -->
<li>
<input type="submit" name="submit" value="Send It!">
</li>
</ol>
</form>
ご覧のとおり、ユーザー名フィールドは非表示になります。ボットはこれを認識できません。その後行う必要があるのは、バックエンド コードでこのフィールドが空であることを検証することだけです。
<?php
if( !isset($_POST['name'])) { die("No Direct Access"); } // Make sure the form has actually been submitted
$name = $_POST['name'];
$email = $_POST['email'];
$spam = $_POST['username']; // Bot trap
if($spam) { // If the hidden field is not empty, it's a bot
die("No spamming allowed bitch!");
} else {
// Process the form like normal
}
上記のプロセスは、モジュールBOTCHA Spam Preventionを使用すると簡単に実行できます。
また、これらの記事を見て、主題の全体像をよりよく理解することもできます。
Green-beast と Web デザイン ですが、このような記事は Web でも数十あります。
効率的な方法の 1 つは、フォームの送信を JavaScript に依存させることです。通常、ボットは JavaScript をサポートしていません。それは完璧な解決策ではありませんが..