最近、お問い合わせフォームからスパムが沢山飛んでくるようになったので、対策してみました。

ネットで、調べてみると

  • Akismetの設定を追加。
  • reCAPTCHAの追加。
  • acceptanceをフォームに追加。

と、3種類の設定が見つかりました。

ただ、Akismetで勝手にスパム判定されるのも・・・

reCAPTCHAだとプラグインを入れて設定になるし

と、言うことで「acceptance」の設定で、チェックボックスをチェックしてから出ないとフォームが送信できない設定をすることに決定したんですが・・・

参照したサイトの設定だと抜けが合って、チェックボックに続ける文字が改行されて表示されてしまうので、私と同じように悩まないで済むように対応した方法を書いておきます。

大げさに書きましたが、要は閉じタグが参照サイトに書いて無かっただけですが・・・

設定した内容は最後の入力と「送信」ボタンの間に

[acceptance acceptance-0]入力内容をご確認の上、チェックを入れてください。
    ※ チェックを入れないと、送信ボタンをクリックしても送信できません。[/acceptance]

こんなコードを入れただけです。

[acceptance xxxxx]表示文字[/acceptance]
これだけで、チェックボックスが表示されて、チェックするまで送信ボタンをクリックしても送信できなくなります。

これだけで、スパム対策になるのでお試しください。

私が使用しているフォームの定義を参考に乗せておきます。

<table border="1">
  <tr>
    <th widht="30%"> お名前 (必須)</th><td>[text* your-name size:70]</td>
  </tr>
  <tr>
    <th widht="30%"> メールアドレス (必須)</th><td>[email* your-email size:70]</td>
  </tr>
  <tr>
    <th widht="30%"> 題  名</th>
    <td>
      [select* your-subject-select "ツールに関するお問い合わせ" "アフィリエイトに関するお問い合わせ" "開発協力に関するお問い合わせ" "その他お問い合わせ(下の欄に題名をお書きくださると助かります)"]
      <font size="1">※ その他の場合に題名を入力ください。</font>
      [text your-subject size:70]
    </td>
  </tr>
  <tr>
    <th widht="30%"> メッセージ本文(必須)<br/> (ご自由にお書き下さい)</th><td>[textarea* your-message 69x30]</td>
  </tr>
  <tr>
    <th widht="25%">添付ファイル</th><td width="75%">[file file-581 limit:5000000 filetypes:gif|png|jpg|pdf|doc|docx|zip]</td>
  </tr>
  <tr>
    <th widht="25%">確  認</th><td><strong>[acceptance acceptance-0]入力内容をご確認の上、チェックを入れてください。<br/>    ※ チェックを入れないと、送信ボタンをクリックしても送信できません。[/acceptance]</strong></td>
  </tr>
</table>
<p>[submit "送信"]</p>