randquest-5.x-1.0.tar.gz - Captchaモジュールにアドイン?
Posted by amayadori on 2007/06/01(金) 15:53
Captchaモジュールの周辺モジュールにCaptcha Riddler | drupal.orgと言うモノがあります。
Captchaモジュールの問題(と答え)を作成するモジュールですが、スクリプトが意外とシンプルなので、今まで、Captchaモジュールそのものを改造していたモノを、このモジュールーを改造してみようかなと思いました。
とりあえず、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」を選択してください。
問題集の記述
- 問題集のフィールドには、
問題=答え
の形式で列記していきます。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フォルダを作成後、パーミッションを変更してください。
日本語化
poフォルダ内のja.poを 管理=>サイト設定=>ローカラゼーション=>インポート で、送信することによって日本語化することができます。
jboxモジュール等のモジュール内のpoフォルダにDrupalのロケール設定に対応したpoファイルがあった場合に、モジュールのインストール時にpoファイルをインポートする機能を提供するモジュールを利用されている場合には自動的に日本語化されます。
| 添付 | サイズ |
|---|---|
| randquest-5.x-1.0.tar.gz | 13.53 KB |
トラックバック
URLから "-notspam" を削除してトラックバックを送信してください。トラックバックポリシーは こちらに提示しています。
毎度おおきにっ!<(_ _)>
いつも、使っていただきありがとうございます。
ホント、こうしてお言葉を頂くと、嬉しいですね\^o^/バンザーイ
不具合もなく・・・と言うことで、何よりです。
ログを見て、comment/reply/ とか、user/login/ 辺りのログが多ければ、それだけスパムが来ていると言うことも言えるかと思います。
見方を変えれば、効果はあると言うことになるかもしれません。
なんにしても、トラブルが起こらないのは何よりです。
機能の拡張にしても、あまり複雑にすると本末転倒な話になってしまうので微妙なところです。
アイディアがあったらぜひ、教えてください。
いつもありがとうございます<(_ _)>
不具合なく順調みたいです・・・
何しろお客さん少ないので・・・・
安定してるみたいですよ 当方では
ワタシも、つい、一昨日くらいに知りました。
ちょうどアレですよ、Captchaを表示させる場所(画面?)を拡張するとか言うモジュールを探っていたときですよ。
見たときに、ワタシのCaptcharの様な計算式とかじゃない問題が出力できるらしいと言うの知って、おーっ!って、思ったんですけど、todoが書いてあって、問題をランダムに出題・・・とかあって、あれ?計算式じゃないけど問題は1種類しか登録できないのか?とか思ったら、んじゃ、これを改造してCaptcharのロジックをそのまま詰め込めばできてしまうじゃんって思って、作ってしまいました(笑)
オリジナルはそれほど大きいスクリプトじゃないのでロジックを詰め込むのは簡単でしたけど、どうせやるならもう少し変化が欲しいなとか欲をかいたのでそれの実現で1日要してしまいました(笑)
ただ、Captcha自体の安定性が今ひとつなので、このモジュールのバグなのか?Captcha自体の問題なのかが釈然としないところがあるんですよね・・・。そこがクリアできればこれに切り替えてもいいかなみたいな感じですかね。
で、2.x系の売りのAPI指向なんですが、1.xとか何とかは書いてないのでもしかしたら1.x系のCaptchaでも使えるのかも?試していませんけど。
前述のCaptchaを表示させる場所を拡張するモジュール(?)などのアプリケーションが利用できるメリットを考えたら、Captchaを改造するよりもメリットが大きくなるんですよね。
一応、期待大ですね。
余談ですが、Captchaの仕様は変わっているんですかね?
1.x系はプレビューで認証通ったらそれ以降は認証欄が表示されなくなるけど、2.xは表示されてしまうので、プレビューする度と、送信するときも認証を通さなければいけなくなったんですよね。
ま、これはこれでセキュリティの向上なので悪くはないのですが、手間が増えますよね・・・あんまり強固にすると使われなくなってしまう可能性があるので痛し痒しなんですけどね・・・。難しいところです。
そんなモジュールがあったのですね。
それこそが API が云々という Captcha 2.x の目指しているところなのかもしれませんね。
先週末に試してみますといいながらできなかったので、日付指定ナシですけど、試したら、結果報告させていただきますね。
このモジュールの改造版を作るときに、使用したCaptchaモジュールの5.x-2.1(captcha-5.x-2.1.tar.gz)をローカル環境でテストしてみていたのであるが、どうも、一度認証に失敗してからじゃないと認証に成功しないような感じがする。
ローカル環境だからいけないのか、その辺はよくわからないが、ちょっと、動作が安定しない予感がします。
ですので、このモジュールを利用する場合はその辺を踏まえた上でご利用ください。
このモジュールはあくまでも、問題と解答の組み合わせを作ってCaptchaモジュールに渡しているだけど、認証テスト自体はCaptchaモジュールで行っています。必ず、同じ問題で認証が通らないという普遍性がある場合はこのモジュールの不具合の可能性がありますので、その辺を検証した/していないを教えていただけると助かります。