サイトで用意しているメールフォーム(CONTACT)が最近SPAMの標的になっていまして。
これはなんとかせなあかんということで、Captchaを導入してみました。

参考にさせていただいたのはこちら。

PHPで使えるCAPTCHA画像作成ライブラリまとめ:phpspot開発日誌

この中の、KCAPTCHAというライブラリを使ってみました。
まず、PHP Classesに行ってソースをダウンロードします。

Class: KCAPTCHA (font) - PHP Classes

解凍するといくつかファイルが出てきますが、
使用するのはPHPファイルが3つとフォルダが2つ。


配置するとこんな感じです。

  • /lib
    • /captcha
      • /fonts
      • /util
      • kcaptcha.php
      • kcaptcha_config.php
  • /captcha
    • index.php


しておく設定は以下の通り。

kcapcha_config.php
29: $show_credits = false;
30: $credits = '';

index.php
27: include('kcaptcha.phpのURI');


すべてアップロード。

で、あとはexample.phpに書かれているのを参考にやれば問題なし。


試しに設置してみると。


サンプル



<?php session_start();?>
<form method="post">
<p><img src="/captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0):
  if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']):
    echo "認証OK";
  else:
    echo "認証NG";
  endif;
endif;
unset($_SESSION['captcha_keystring']);
?>


Captchaを表示する部分と、認証を行う部分とでsessionを有効にしてやればOK。
かなり簡単です。

へー。