※update
2008/08/05 version 1.00 公開
2008/03/12 version 0.22 公開
2008/03/10 version 0.21 公開
ブログ・
掲示板を運営していると、必ずといってよいほど襲い掛かってくるものが、いわゆる広告投稿。つまり、スパム。
スパムは実にうざったいものです。
コメントスパムなど、何度消してもキリがない。
そんなこんなで困っていたので、ちょっと
PHPでプログラムを組んでみました。文字の位置がぶれることと、背景画像と組み合わさって表示される事により、
CAPTCHAのように表示しています。
内部では、
画像連結・
画像結合をして表示しています。
実行サンプルはこちらです。クリックすると新しいウインドウで結果が表示されます)
ダウンロードするファイルは、こちらです[ver 1.00](ZIPで圧縮しています)。
旧バージョンはこちらです[ver 0.22](ZIPで圧縮しています)。
Hotmailなどを取得する際に、画像で表示された文字を入力する必要がありますが、あんな感じ”風”に文字を出力するプログラムです。
スパム対策用
画像連結(
画像結合)表示プログラムです。
あらかじめテキストを画像で登録しておいて、その画像と背景画像を指定すれば、画像を結合して表示してくれます。また、文字の位置も、ランダムで表示位置が調整されます。
スパム対策等に使えるのではないかと。
なお、このプログラムを作成するのに参考にさせて頂いたURLは、以下の2つとなっております。
http://www.opensubscriber.com/message/php-users@php.gr.jp/1618093.html
http://www.phppro.jp/news/116
以下にファイルの内容と解説を記載します。
ZIPファイルの中身の構成は、
[readme.txt] - 説明書です。
[index.php] - 実際に使用する際には、このファイルにアクセスします。画像パスワード作成プログラムを呼び出します。
[grp.php] - 画像パスワード作成プログラム本体です。
[postcheck.php] - サンプル用です。入力されたパスコードが合っているかをチェックし、処理を実行します。
[complete.php] - サンプル用です。完了画面です。
[passcode.png] - パスコード(表示される文字)を描いた画像です。
[passcode_bg01.png] - 背景1の画像です。ランダムに適用されます。
[passcode_bg02.png] - 背景2の画像です。ランダムに適用されます。
[passcode_bg03.png] - 背景3の画像です。ランダムに適用されます。
となっています。
実際にどのような挙動をするかというと、まず、パスコード(表示される文字)の画像がこんな感じです。
0から9まで、縦横同じサイズで記載します。なお、一つの文字のサイズは、grp.phpの設定項目で編集可能です。
で、背景がこんな感じで3種類あります。
まず、背景がランダムに選択され、
ランダムの位置から貼り付けられます。※したがって、背景の大きさは、出力画像よりも大きい必要があります。
そして、表示される文字の画像からランダムで選択された文字が表示されます。その際、表示位置もランダムでぶれるようになっています。(ぶれ具合は設定可能です。)
ちなみに、図解すると↓こんな感じです。
サンプルでは数字を使っていますが、麻雀用の
掲示板で麻雀牌の画像を使ったり、トランプの画像を使ったり、使用方法の応用はいろいろあるのではないかと。
掲示板スパムや
コメントスパムはブログを運営する上での悩みの種だと思いますので、また時間があるときにでも新たなスパム対策のプログラムをつくっておきたいと思っています。
追記:
ようやく
コメント機能を追加しました!で、さっそくこのパスコード作成プログラムを使用しています。書き込みチェックの際に、パスコードを入力してもらうようになっています。このように使えば、きっとスパム対策になると思うのですたい。
さらに追記:
そんでもってトラックバック機能も追加しました。トラックバックURLを表示する前に、このプログラムでチェックするようにしています。このプログラムの強みは、表示される文字の画像と、背景の画像を自分で選択できる事だと思っています。(位置のブレぐらいが調整可能なことも)自分で描いた絵を使ったりするのも、さらに効果的だと思います。
まず、下の[Submit Check | 書き込み確認へ]のボタンを押すと入力チェックへ移動するのですが、
その際に、パスコードの数字を入力して頂く様に作成しています。
このようにすれば、いわゆる自動型ロボットスパム対策になるのではないかと思います。