image_captcha-css
スパム対策のCAPTCHAモジュールに同梱のImageCAPTCHAは、テキスト文字を画像に書き出して、さらにノイズを載せたり文字を変形させてOCRしにくくしておいて、その文字を入力必須にすることによって、スパム投稿を抑制しようというモジュールです。
しかし、ImageCAPTCHAで作り出す画像はPHPで直接出力されているので、環境によっては表示されないことがあるようです。
正直な話、ワタシには"学"がないので何が根本原因なのか判りません。
たまたま、懇意にしていただいているサイトさんを覗いた際に、そんな悩みがしたためられていましたので、色々首をつっこんでいました。
しかし、同じようなことを素のPHPでサンプルスクリプトを作って実行させると問題ないので、もう、途方に暮れていました。
話を進めていく過程で、学のワタシに後出来ることは、手前作成のrandquestモジュールのように、PHPが作り出す画像をファイルに吐き出してそれを表示させる仕組みに作り替えるしかないな・・・と、言うことになりました。
ホント、ワタシにはなかなかカスタマイズする糸口がつかめず、迷走すること数週間・・・。
ひょんな事からCSSで表示させる方法に気付きました。
ローカル環境でしか試してないですが、これが思惑通り上手くいきましたので、とりあえず人柱用にアップすることにしました。
このカスタムモジュールはCAPTCHA-5.x-3.0以降に同梱されているImageCAPTCHAモジュールに、カスタマイズを加えただけのものです。別モジュール化(変数の書き換え等)は行っていませんので、オリジナルのImageCAPTCHAモジュールとは同居できません。
ImageCAPTCHAモジュール(image_captcha.module)と差し替えて使用してください。
このモジュールはDrupalのファイルシステム(デフォルトではfiles)ディレクトリ内に"image_captcha"というフォルダを作成します。その中に、任意のファイル名の画像ファイルを作成します。
ディレクトリが作成されないまたはファイルが作成されない場合は、パーミッションを確認してください。
"image_captcha"ディレクトリ内に作成されたファイルはImageCAPTCHAが実行され、画像ファイルを作成する前に、5分以上前の画像をすべて削除します。5分以内で相当な数のImageCAPTCHAの実行が起こらない限りは削除するべきファイルの数も少ないはずですので、動作速度に極端な影響は出ないと思います。
このカスタマイズ版はファイル生成および削除、ディレクトリ作成、CAPTCHAフォームまわり以外は、オリジナルのままです。よって、オリジナルに存在する不具合は関知しておりません。
ワタシが手を入れた部分に起因する不具合については極力改善の努力をしたいと思いますが、保証は出来ません。
また、カスタマイズ版を利用したことで損害が発生しても責任はとることが出来ません。
自己責任で利用してください。
2008/02/05 あま@j
リリース
| Official releases | 日付 | サイズ | Links |
|---|---|---|---|
| 1.0.0-dev-3 | 2008-2月-11 | 7.31 KB |
サポート
- すべてのサポート要望を見る
- 未解決のサポート要望を見る
- 未解決のバグ報告を見る
- 未解決の要望を見る
- Login or register to create an issue
キチンと動作しているようですね。
何よりです。
確固たる原因を突き詰めて、カスタマイズした訳ではなかったので、動作するかどうかが一番の気がかりでしたので、動いているようだという一言で、安心しました。
使えるようになって、よかったですね。
ImageCAPTCHAは、英数字だけで、あの判読のしにくさになるので、そのまま日本語対応しても判別できなくなる可能性の方が高いので(笑)そのままでは使えませんが、興味がわいたら日本語対応というのも良いかもしれませんね。
日本語で画像認証するのなら、デザインフォントを用意してrandquestしただけでも、十分使えますけどね。
日本語はデザインフォントを使うだけでOCRしにくくなりますからね。
ま、日本語にこだわる必要もないんですけど(^-^;△フキフキ
何はともあれ、何度もお手を煩わせてスミマセンでした。
何か、発見がありました教えてください。
お待ちしてます。
親切にして頂いて恐縮です。
早速ダウンロードして試してみました。
結果良好です。エラーも今のところありません。
当サイトのコメントフォームにて実運用中です。
しばらくエラー表示はそのままにして様子を見ていきます。
本当にありがとうございました。<(_ _)>
三度、しょうもないミスです。
エラートラップ用のルーチンが重複しています…というようなエラーです(^-^;△フキフキ
ルーチン名を変更しなければいけなかったのですが、変更されていませんでした。
もう、お詫びの言葉もありません<(__)>
流用が危険だという、よい見本です。
ホント、ゴメンなさい。
早速入れ替えてみました。
手順は前回と同じ モジュールを一回無効にして FTPで該当モジュールファイル入れ替え
モジュール有効 他のモジュール ウンヌンカンヌン・・・て出て続行クリック
以下表示されました。
Fatal error: Cannot redeclare myerrorhandler() (previously declared in /var/www/html/virtual/sites/all/modules/randquest/randquest.module:461) in /var/www/html/virtual/sites/all/modules/captcha/image_captcha/image_captcha.module on line 698
アタシのこの意味が解ればいいのですが
まったく解りません。<(_ _)>
ごめんなさい
【すべてのリリースを見る】リンクが正しく反映されてないようだったので、プロジェクトの作り直しをしたが、、旧プロジェクトのページに繋がっていたコメントをすべて移動した際に、ワタクシの操作ミスがあり、コメントを削除してしまいました。
貴重なご意見をせっかくいただいていたというのに、本当に申し訳ありません。
それまでの流れですが、この改造を施す発端になったのは
オーーイドットネット | CentOSとDrupalの覚書自己満足サイト
さんでの kidney@o--i.net さんの嘆きだったのですが、色々あれこれやっていただいて、PHPで直接画像を表示させている部分が上手く機能していないのではないか?というもくろみを持ったのですが、その確認もかねてとりあえず、手前作のrandquestの手法をそのまま取り入れて画像をファイルに書き出してスタイルシートで表示させる改造を施して試してもらうことにしたのですが…PHPのエラー表示をオンにして試したところ、エラーが表示されました…というのが前回までの流れです。
いただいた報告によると、どうも古いが画像ファイルを削除する際にエラーを起こしたときにトラップしてエラーログに記録するルーチンの部分でrandquestのをそのまま使っていたため、重複エラーが発生していた模様です。
一応動作確認はしましたが、エラーを発生させてまで動作確認をしていなかったので、漏れてしまったようです。
本当にゴメンなさい。ワタクシのスクリプティングミスおよび確認ミスです<(_ _)>
該当部分を修正したモノをリリースにあげておきましたのでお試しください。