CAPTCHA機能を用いたWebフォーム入力を実装する3つのユーティリティPrograming Bible(4/5 ページ)

» 2008年04月16日 15時10分 公開
[Ben MartinOpen Tech Press]
SourceForge.JP Magazine

KCAPTCHA

KCAPTCHA KCAPTCHA

 既存サイトへの統合の容易さという観点から見た場合、capictchaとCaptcha PHPの間に位置しているのがKCAPTCHAである。KCAPTCHAにも、正しいCAPTCHA文字列をユーザーが入力したかを確認するための機能は用意されているものの、このチェック機能はCaptcha PHPのPHP用APIのような扱いやすい形では提供されていない。つまりKCAPTCHAはフォーム中に設けるCAPTCHAイメージと入力フォームを1つのセクションとして丸ごと生成してくれる訳ではなく、その辺の処理は自分で対処する必要がある。

 今回わたしが試用したのはKCAPTCHAのバージョン1.2.5である。ただしこのtarボールをダウンロードするにはメールによる確認を伴うphpclasses.orgへの登録が必要となるが、そうした手続きを煩わしいと感じる場合は、先に紹介したいずれかのソリューションを利用すべきかもしれない。なおtarボールの展開はカレントディレクトリにて実行されるので、あらかじめDocumentRootの下層にkcaptchaという名称のサブディレクトリを新規に作成しておき、そこにtarボールを移動しておく方がいいだろう。

 このユーティリティはindex.phpファイルにてCAPTCHAイメージを生成する仕様になっており、example.php.はそのサンプルファイルである。また本パッケージによるCAPTCHAの生成と検証はPHPセッションにて行われ、KCAPTCHAを使用する上でPHPファイルにinclude()を記述しておく必要はない。この方式のデメリットは、後記に示したサンプルのように、ユーザーが正しいCAPTCHA入力を行っているかを_SESSIONにて直接テストする検証用コードを自前で用意しなければならない点である。

<form ...>

...

<img src="https://image.itmedia.co.jp/enterprise/articles/0804/16/index.php?<?php echo session_name()?>=<?php echo session_id()?>"><

...

</form>

...

if(isset($_SESSION['captcha_keystring'])

&& $_SESSION['captcha_keystring'] == $_POST['keystring'])

{

... ok ...

}


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ