Captcha認証問題作成モジュール randquest
スパム対策にCaptcha認証を提供するCaptchaモジュール。
そのCaptchaモジュールの周辺モジュールにCaptcha Riddler | drupal.orgと言うモノがあります。
Captchaモジュールの問題(と答え)を作成するモジュールですが、スクリプトが意外とシンプルなので、今まで、Captchaモジュールそのものを改造していたモノを、このモジュールを改造することによってForm storeモジュールを利用してデフォルト以外の画面にもCaptcha認証が利用できるというメリットがあるので、今後はこの路線で進めていこうかと思います。
オリジナルのriddlerモジュールとはちょっと路線が違う1のでrandquestという別名のモジュールにしました。
randquest 5.x-3.0
2007/11/09update
CAPTCHAモジュールが 5.x-3.0 に進化して、API仕様が変更になりました。それに対応したバージョンです。
まだ、ローカル環境でしか試してません。これからここにも導入します(ヲイ)スミマセン
判っている問題点があります。
問題集を格納しておくためのプロフィールのフィールドが「非表示項目」になっていて、CAPTCHAの「フォーム上に "CAPTCHA管理" リンクを追加」オプションが有効になっている場合に、メニュー「自分のアカウント」からプロフィールの編集に行ったときに、項目が表示されなくなっています。おそらく、CAPTCHAの問題だと思うので、他に同様の用途でプロフィールのフィールドを利用している場合には同様の問題が発生すると思います。
この場合、一時的に、CAPTCHAのオプションを無効にするか、プロフィールのフィールドの属性を変更するかすれば編集できるようになります。
アップデートは上書きするだけで。randquest自身ではテーブルを作成したりはしていませんのでupdate.phpを実行する必要はないかと思います。CAPTCHAモジュールはテーブルを使うようになったので、update.phpの実行が必要な場合があるかもしれません。
リリースファイルはproject/randquestにあります。
randquest 5.x-1.2
2007/07/24
[img:]の画像認証タイプを利用しているときに、稀に古い認証用画像群が削除できないことがあるかもしれません。
また、ファイルシステムフォルダ内に作成している認証用画像群の一時保管のためのフォルダのパーミッションが何らかの理由で変わってしまったりして、モジュールから削除できなかった場合のエラートラップを組み込んでいなかったので、エラーメッセージが表示されていました。
管理者以外が目にすることは精神衛生上、よろしくないのでエラートラップを組み込んでエラーメッセージを表示しないで、Drupalの管理->ログ->最近のログエントリ(/admin/logs/watchdog)に記録するようにしました。
ただし、ファイルの削除と、フォルダの削除で切り分けが出来ていないので1つの古い認証用画像群の削除失敗につき、3つの同じログが記録されて2しまいます。
ですので、ファイル群が複数有った場合にファイル群×3のログエントリが記録されてしまいます。この辺は今後の課題です(T.T)
削除エラーが発生してもログの記録だけをして、後はそのまま流れますのでユーザーには影響はありません。
ログエントリを見ていただいて、randquestのエラーが記録されていたら、ファイルシステムフォルダ内のcapimgフォルダのパーミッションを確認してください。
[img:]コマンドを利用していない場合はrandquest-5.x-1.1と同じ性能です。
一昨日、昨日、今日、明日、明後日の曜日を訪ねる問題形式を追加しました。
randquest 5.x-1.0
最初のバージョンはcaptchar-5.x-1.12.1 の機能を丸ごと吸収してみました。その上で、ちょっと使い勝手を改良しました。
- プロフィールのフィールド名に制約がありましたが、モジュールの管理画面からフィールドを選択するようにしましたので、フィールドの設定に制約はなくなりました。これにより、問題集を管理画面から切り替える・・・などという使い方もできるようになりました。
- 画像認証の際の問題出力ロジックを変更しました。翻訳対象文字列からHTMLタグを排除しましたので、該当部分の翻訳を修正する際に気が楽になりました(笑)
- randquestフォルダをsites/all/modules/にコピーしてください。
- randquestフォルダ内のfontフォルダに画像認証に使用するttfフォントをコピーしてください。ただし、画像認証を利用しない場合には不要です。
- profileモジュール、および、captcha、randquestモジュールを有効にしてください。
- 管理=>ユーザー管理=>プロフィール にて、「複数行のテキストフィールド」を選んで、フィールドを作成してください。フィールド名その他は判りやすければ何でも構いません。
- uid=1のユーザー(Drupalインストール直後に登録したユーザー)でログインして、「自分のアカウント」=>「編集」で、先ほど作成したフィールドに問題を列記します(詳細はこの後)。
- 管理=>サイト設定=>Captcha=>randquest にて、ドロップダウンリストから作成したプロフィールのフィールド名を選択してください。
- Captchaタブをクリックして、各ロールに対してCaptcha認証を行いたいフォームのドロップダウンリストのところで「randquest/randquest」を選択してください。
問題集の記述
- normal問題
問題集のフィールドには、
問題=答え
の形式で列記していきます。1行に付き1問です。2問目以降は改行して記述してください。
= の前までがそのまま出題文として出力されます。= の後ろ改行までが答えとして認識されます。なお、空白文字は利用しないでください。無視されます。
例:
2×5の答えを全角数字で入力してください=10
1×3+5の答えを全角数字で入力してください=8
「とうきょうと」を漢字で入力してください=東京都
「大阪府」の読みをひらがなで入力してください=おおさかふ
等々。。。= で区切ったモノをそのまま利用している単純な仕組みです。ですので例えば、TOKYOを半角小文字で入力しなさい(tokyo)と言ったことも可能です(スパム対策としての有効度は疑問ですが・・・)。 - Captchajpモジュールタイプ
[jp:4]=あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめも
と、[jp: で始まる問題はCaptchajpモジュールと同様の出題をします。
[jp: の後の半角数字1文字で、答えの文字数を指定します。1から9の1桁のみ有効です。2桁記述した場合は[jp:の次の1文字のみ認識します。]=の後は、出題する範囲を列記します。「この中から AからXまでの中でDとKの間の0文字を答えなさい」という風に出題します。 - 日本語画像認証タイプ
[img:4]=あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよわをん
と、[img: で始まる問題は画像認証で出題されます。
[img: の後の半角数字1文字で、答えの文字数を指定します。1から9の1桁のみ有効です。2桁記述した場合は[jp:の次の1文字のみ認識します。]=の後は、出題する範囲を列記します。範囲の中から指定された文字数をランダムに選択して画像を作成します。
画像を表示する際には、CSSファイルを使用して表示させています。CSSファイルと画像の格納場所はDrupalのファイルシステム内にcapimgというフォルダを作成して、さらに、ユニークな名前のフォルダを作成してその中に保管しています。安全を考慮して、即時削除は行わず、次回の画像認証実行時に5分以上前のフォルダのみ削除を実行しています。
ファイルシステム内のフォルダcapimgは最初の画像認証時に自動作成されますが、サーバーの設定によってはエラーとなり作成することができないケースがあります。その場合は、手動でcapimgフォルダを作成後、パーミッションを変更してください。 - 曜日を訪ねるタイプrandquest-5.x-1.1追加
[day:]=オプション等はありません。このまま記述してください。
今日を基準とした一昨日、昨日、今日、明日、明後日の曜日を訪ねる問題が出力されます。
解答はサイトの翻訳文字列から得ています。randquest 5.x-1.1に同梱のja.poはこの部分を上書きするように文字列がセットされています。不都合がある場合には既存の文字列は上書きしないようにして翻訳を当てるか、randquest-5.x-1.1 明日は何曜日? | Drupal-J.comの添付ファイルja-ex.poを利用してください。
randquest-5.x-1.2より、月曜日~日曜日までの文字列は日本語化ファイルに含めないようにしました。
サイトにより該当部分の文字列が違う場合は、サイト上の文字列に読み替えてください。また、認証問題の解答もその文字列になりますので注意してください。
認証問題の回答欄の下の説明文は導入サイトの文字列を読み出すようになっていますので日本語化ファイルを手直しする必要はありません。
日本語化
poフォルダ内のja.poを 管理=>サイト設定=>ローカラゼーション=>インポート で、送信することによって日本語化することができます。
jboxモジュール等のモジュール内のpoフォルダにDrupalのロケール設定に対応したpoファイルがあった場合に、モジュールのインストール時にpoファイルをインポートする機能を提供するモジュールを利用されている場合には自動的に日本語化されます。
| 添付 | サイズ |
|---|---|
| randquest-5.x-1.2.tar.gz | 15.22 KB |