4

既存のWeb連絡フォームに何らかのスパム保護(キャプチャなど)を実装することになっています。ただし、元のフォームでは、アクセスできない仮想サーバー上の.cgiファイルが使用されているため、このスクリプトを使用できません。PHPメール機能がオフになっいます。

自分のcgiファイルが必要だと思いますが、perlやcgiにはあまり興味がありません:-)

たぶん、あなたは私にこの問題のある種の解決策を指摘することができます。

4

2 に答える 2

4

すべてのユーザーがjavascriptをオンにしていると思われる場合は、ある種の斜めのアンチボットを作成できます。

フォームactionを404ページに設定し、JavaScriptで適切なactionページに戻します。例:

<form action="nowhere_ahaha" id="myform">
   ...
</form>
<script>
document.getElementById('myform').action = '/form_action.cgi';
</script>

ボットは通常jsを実行しませんが、人間の訪問者は実行するため、これはすべて機能します。

于 2011-11-19T10:31:44.453 に答える
4

ネガティブ キャプチャを追加できます。

ネガティブ キャプチャには、ありきたりの画像キャプチャとまったく同じ目的があります。つまり、ボットがフォームを送信できないようにすることです。画像 (「ポジティブ」) キャプチャは、人間だけが実行でき、ボットにはできないステップを実装することでこれを行います。しかし、これは悪いことです。ユーザビリティの問題を引き起こし、コンバージョン率を低下させ、多くの人々を混乱させます。逆にやってみませんか?ネガティブ キャプチャは、ボットのみが実行できるタスクを含むフォームを作成しますが、人間は実行できません。これはまったく同じ効果があり、(逸話的に) 正のキャプチャと比較した場合、誤検知の識別率がはるかに低くなります。これらはすべて、人間がフォームを送信するために余分な手間をかけることなく行われます。それは本当にウィンウィンです。[ソース] .

あなたの場合、おそらくハニーポットを使用するのが最善です: 新しいフィールドを追加します:

<div style="position: absolute; left: -2000px;"><input type="text" name="surname"  value="" /></div>

これは、姓を受け取ることに関心がないことを前提としています。人々がこのフィールドに入力して送信できた場合、おそらくボットです。通常のブラウザーではフィールドは表示されません。通常のユーザーには表示されないため、入力されません。

ここで、CGI スクリプトで、「姓」をフィルター処理するだけです。設定されている場合、処理を停止してエラーを発生させるか、そのままにしておきます。

または、それができない場合は、投稿されたフォームの結果を「姓が設定されていないレコード」でフィルタリングしてみてください。たとえば、Excel/CSV で結果が得られた場合: Excel を使用して、姓を持つアイテムを除外します。または、電子メール フィルタを使用して、surname: .... に値があるメールを特別なディレクトリに移動します。

于 2011-11-19T10:40:18.553 に答える