NP_NoRobotComment|使用方法とダウンロード
NP_NoRobotComment|使用方法とダウンロード
- Author : pushman|Download|2006-05-04 Thu 02:31
-
簡易コメントスパム対策プラグイン。
***NP_NoRobotCommentの機能
コメントフォームを表示する際に、独自のinputタグを出力し、コメントフォームを利用しないコメントを拒否します。多くのコメントスパムはフォームを利用せず、専用のプログラムを呼び出しているそうです。なので、アクセスアップ目的で地道にコメントしてきたりする人為的なスパムには、このプラグインはまったくの無力です。なんにも学習しませんので。また、海外のコメントスパマーも心を入れ替えて地道に投稿してくると、普通に受けちゃいます。
このプラグインの動作を確認されたい方は、この記事にコメントしてみてください。テストで書き込まれたコメントは定期的に消去しますのでご遠慮なく。
***NP_NoRobotCommentの流れ
+hidden属性で設定された値をチェック~
空なら拒否
+アクセスしてきた時間とコメントを投稿した時間を比較~
最短経過時間より短ければ拒否(設定で無効にできます)~
最長経過時間より長ければ拒否(設定で無効にできます)
+全角文字が含まれているかチェック(設定で無効にできます)
+チェックボックスの状態をチェック(設定で無効にできます)***設定
- チェックボックスの直前に出力するタグ
チェックボックスの直前に任意のタグを出力できます。デフォルトは空です。
- チェックボックスの直後に出力するタグ
チェックボックスの直後に任意のタグを出力できます。デフォルトは空です。
- チェックボックス
ここで選択された状態の場合、コメントを拒否します。デフォルトは「チェックされていない場合に拒否」が選択されていますので、チェックされていない場合、コメントを拒否します。「チェックされている場合に拒否」を選択すると、チェックされている場合、コメントを拒否します。
どちらのオプションを選択しても、初期状態はコメントを許可しない様に設定されます*1。ログイン時にもチェックボックスは表示されますが、設定確認の為なのでログイン時のコメントを拒否することはありません。
Ver.0.94から「使用しない」を選択することで、この機能を無効にできるようにしました。
- 拒否時の表示メッセージ(チェックされていない場合)
「拒否するチェックボックスの状態」が「チェックされていない場合に拒否」の時に、チェックボックスの横に表示するメッセージです。
- 拒否時の表示メッセージ(チェックされている場合)
「拒否するチェックボックスの状態」が「チェックされている場合に拒否」の時に、チェックボックスの横に表示するメッセージです。
- 確認メッセージ
コメント拒否した際に、表示するエラーメッセージです。
- 最短許可時間[秒](「0」にすると無効になります)
ここに入力した時間より短い経過時間で投稿されたコメントは問答無用で拒否します。ただし、エラーメッセージを表示した場合、タイマー機能は無効になります。デフォルトでは180秒に設定されています。
- 最長許可時間[秒](「0」にすると無効になります)
ここに入力した時間より長い経過時間で投稿されたコメントは問答無用で拒否します。ただし、エラーメッセージを表示した場合、タイマー機能は無効になります。デフォルトでは1800秒に設定されています。
- 半角英数字のみのコメントを拒否しますか?
「はい」にするとコメント本文に全角文字が含まれない場合コメントを拒否します。デフォルトは「いいえ」です。簡易なチェックしかしていませんので完全ではありませんが、かなりのスパムを拒否できます。
具体的にすり抜けられた例として、ページのタイトルを一緒に投稿されたことがありました…ほんとイタチごっこです。日本語が含まれていても、それが「ブログタイトル」「記事タイトル」のみであれば、拒否するようになりました。- 拒否時の表示メッセージ(半角英数字拒否の場合)
半角英数字のチェックで拒否した場合のメッセージです。
- 半角英数字拒否の場合の確認メッセージ
ここにメッセージを入力しておくと、半角英数字のチェックで一度拒否してからエラーメッセージと共にチェックボックスを表示して、半角英数字のみのコメントも受け付ける事ができます。デフォルトは空です*2。
入力例:「I can not use Japanese.」
- メンバーメールフォームでもチェックボックスを表示しますか?
メンバーメールフォームにもチェックボックスを表示させ、スパムを防ぎます。デフォルトは「いいえ」になっています。
- 無効にするブログのid
このプラグインを無効にする Blog の Blogid を入力します。複数入力する際は「,」で区切ってください。
- 管理操作履歴にログを記録しますか?
ブロックしたコメントを「管理操作履歴」に記録します。ただし、文字数制限のため全文を記録することはできません。デフォルトは「いいえ」になっています。
Ver.0.93以前からアップデートされる際は、一旦「NP_NoRobotComment」を削除してから再インストールしてください。その際、設定は引き継がれませんので、ご注意ください。
***動作環境
このプラグインは、Nucleus 3.2以上で作られたイベントを利用しているので、必然的にNucleus 3.2以上でないと動きません。***NP_EzCommentとの併用
shizukiさんのおかげで特別な設定が不要になりました。ありがとうございます。
NP_EzComment***Special Thanks
このプラグインの元ネタは「dj k!ng」さんの「簡易コメント・スパム対策」です。何度もアドバイスを頂きました。ほんとにありがとうございます。また、shizukiさん、yuさん、嶽花さんのご協力により、より使いやすくなってきました。いろいろなご提案、ご報告ありがとうございます。
***ダウンロード
このプラグインのライセンスは、本体であるNucleusに準じ、GPLです。詳しくはNucleus CMS Japan、またはライセンスについて - GNU プロジェクト - フリーソフトウェア財団 (FSF)をご覧ください。また、このプラグインは僕がPHPの勉強がてら作成したのもので、重大な欠陥があるかもしれません。このプラグインを使用されたことで、不具合が生じても当サイトは責任をとれませんので、ご使用は自己責任でお願いします。
ご報告いただいた不具合やご要望には可能な限り対応したいと思っていますので、なにかありましたらこの記事にコメントまでご連絡ください。
Dowmload:NP_NoRobotComment 0.94(zip)
-
-
Tag(s): NP_NoRobotComment
Comments
- Posted by craftai|2006-05-19 Fri 18:01
-
こちらのプラグインを文中で紹介させていただきました。
いまのところスパム・コメントは防げていますが時々すり抜けてくるものがあります。何となくどきどきしながら解析をみつめる日が続いています。 - Posted by pushman|2006-05-20 Sat 01:26
-
craftai さん
こんにちは。当サイトではチェックボックスを外すことでコメントを受け付ける設定にしてから、すり抜けられたことはありません。といっても、零細サイトですので相手にされていないだけかもしれませんが(笑)。
3.22 にバージョンアップされた暁には、是非お試しください。
- Posted by 佐藤(な)|2006-05-26 Fri 11:05
-
はじめまして、佐藤(な)と申します。
導入も、コメントする側も、とっても手軽で便利ですね。
NP_Captchaを使っていたのですが、乗り換えてみました。ぼくの環境でインストールできない問題がありましたので、ご報告させていただきますね。
----
1つのデータベースに、複数のNucleusをインストールするためには、MYSQL_PREFIXを設定するのですが、その場合、プラグイン内のsupportsFeatureメソッドで、引数'SqlTablePrefix'の時の戻値が、TRUEとみなされる値が必要になります。
具体的には、、、
function supportsFeature($what) {
switch($what){
case 'SqlTablePrefix':
return 1;
default:
return 0;
}
}
こんな感じのやつです。
----便利なプラグインをありがとうございます。:-)
- Posted by pushman|2006-05-27 Sat 00:55
-
佐藤(な)さん
はじめまして。っていうのがちょっと奇妙な感じがするくらい、佐藤(な)さんのサイトにはお世話になっております。ありがとうございます。そして、貴重な情報と解説、ありがとうございます。他の方が作成されたプラグインをいじりながら PHP の勉強をしているので、意味がわからないところがたくさんあります。そんなんでプラグイン配付すんなよ、と自分でも思います。すみません。もっと精進します。
ということでファイルは差し替えました。ありがとうございます。
導入も、コメントする側も、とっても手軽で便利ですね。
最終的には、コメントする側の負担を 0 にするのが目標なのですが、なかなかいい知恵がうかびません。まあ僕ができるのならとっくの昔に誰かが作ってくれていると思いますが(笑)。しかし夢は諦めず、がんばります。
- Posted by rai|2006-06-23 Fri 17:50
-
チェックではなく、特定の文字(漢字など2バイト文字)が入力されていないとエラーになるようにしたいのですが、どのように改造すればよろしいでしょうか。
- Posted by pushman|2006-06-23 Fri 18:55
-
rai さん
はじめまして、こんにちは。チェックではなく、特定の文字(漢字など2バイト文字)が入力されていないとエラーになるようにしたいのですが
たしかこういう機能のプラグインがあったと思いますよ。
どのように改造すればよろしいでしょうか。
たぶん、正規表現を使って 2 バイト文字があるかどうかを調べればいいのではないかと、推察いたします。
…正確なところは僕ではちょっとわかりかねます。すみません。
- Posted by 桂馬|2006-11-23 Thu 22:31
-
どうも。桂馬です。
最新版(0.82)において、NP_EzCommentが使えなくなってました。
原因は新機能(?)のhiddenに埋め込まれたタイマーが、
EzCommentでは使えないからだと思われます。EzCommentで送信したところ、
<quote>
NoRobotComment[t]Item ID:195 NANE:Keima | posttime = "" | not valid.
</quote>
という感じで管理ログに残ります。<INPUT id=nucleus_cf_timer type=hidden value=1164287698 name=timer>
をなんとかしてEzCommentに埋め込めれば万事解決だと思うのですが・・・。
なにぶん、phpは素人でして、HTMLくらいしか書き換えできないです・・・。 - Posted by pushman|2006-11-23 Thu 23:00
-
桂馬さん、ご報告ありがとうございます。
このバージョンだと他の理由もあってEzCommentとの併用がややこしくなってしまいました。大変申し訳ありません。
タイマー機能をオフにできるようちょっと改造を試みてみますので、しばしお待ちください。というだけでは申し訳ないので、しばらくNP_NoRobotCommentの146行目「// timer check」から190行目「// checkbox check」の直前の空行、つまり189行目まで削除するかコメントアウトしてください。これでとりあえずタイマー機能は無効になるはずです。
ご迷惑おかけします。
- Posted by 桂馬|2006-11-24 Fri 00:33
-
桂馬です。
コメントアウトでの無効化ですが、なるほど。その手がありましたね。
なんとかしてEzCommentとNoRobotCommentを結び付けようとしていました。
MySQLの「NoRobotCommentの」データをEzCommentで読み込んで、
NoRobotCommentのオプションで変更があった場合でも、EzCommentも変化してくれる、というphpを自分なりに作っていたのですが、
$this->getOption()
の「$this->」の意味がわからなくて自滅しました orz
余計なことはしないほうがいいということですね。一応、ソースコードをアップローダーにアップしました。
何の参考にもならないと思いますが、悪あがきのしるしを残して起きます(笑)http://www5.kcn.ne.jp/~sisy...
上記URLの、「NoRobotComment Hacks 2006/11/23」というコメント部分が自作コードで、
その下の
<!-- NoRobotComment -->
{$norobottime}
{$norobotbox}
が追記した部分です。もうどうしようもない人間で申し訳ありません・・・。
- Posted by pushman|2006-11-24 Fri 01:03
-
桂馬さん、お手間とらせてすみません。
僕もNucleusを使うまではまったくPHPを理解していませんでしたし、今もまだまだ勉強中でよくわからないことがたくさんあります。「$this->」の説明は僕では不可能です。すみません。ただ、これはそのプラグインのオプションを参照するというか利用することなので、NP_EzCommentの方でオプションを作成する必要があります。
また、チェックボックスの値も以前のものとは違うため、このままでは動作しないような気がします。
現在バージョンアップ作業中なのですが、新バージョンでは英語のみのコメントを許可しないようにもできる予定です。そのオプションが有効な場合は、チェックボックスやタイマーは機能無効になる予定です。
ということで、すみませんがしばらくご迷惑おかけします。しばしお待ちくださいませ。
- Posted by shizuki|2006-11-26 Sun 02:03
-
はじめまして
いまNP_EzComment 改造中で、フォーム表示の時に、「FormExtra」イベント呼び出すようにしてるんで、そのままでもタイマーもろもろ使えるようになるはずです
ちなみに NP_EzComment から NP_NoRobotComment のオプションを参照する時は、global $manager;
$noRoboComm = $manager->('NP_NoRobotComment');
$noRoboComm->getOption('maxtimer');とかやります
- Posted by pushman|2006-11-26 Sun 02:32
-
shizukiさん、はじめまして。そして、素晴らしいプラグインの数々、またその紹介などで一方的にお世話になっております。ありがとうございます。
どうやってもNP_EzCommentの方に改造が必要になり、僕ではお手上げ状態だったのでとても助かります。
ちなみに現在英語のみのコメントを弾く改造を追加中で、テストも順調…だったのですが、なんとページのタイトルを追加してくるスパムに遭遇し、あっけなく突破されてしまいました…やはり小手先ではダメですね。
- Posted by shizuki|2006-12-01 Fri 14:01
-
あー、あせった
auto detect したらトラックバック URL が違うの出てきてトラックバック出来ないとか言われた ^^;昼休みにちょっと弄ったんで記事にしてみました
よかったら取り込んでやってください - Posted by pushman|2006-12-02 Sat 01:02
-
shizukiさん、トラックバックのご指摘ありがとうございました。現在は有効に機能していると思われます。
そして、素晴らしい改造を指南していただきありがとうございます。日本語は文字コードがややこしいので安易な道に逃げておりましたので(笑)、とても助かりました。ありがたく取り入れさせていただきます。
- Posted by yu|2006-12-16 Sat 20:56
-
こんばんわ。
プラグイン、便利に使わせてもらってます。メンバーメールフォームのチェックがうまくいってなかったみたいなので、ちょっといじってみました。
$itemidのかわりに$memberidを代入・チェックさせることでこちらの環境ではうまく動くようになりました。
ではでは。 - Posted by pushman|2006-12-16 Sat 21:37
-
yuさん、こんばんは。
ご利用ありがとうございます。そして、ご迷惑おかけしてすみません。メンバーメールフォームでの確認がおろそかでした。
ソースを確認したところ、現状ではメンバーメールフォームのときは半角英数字の文字チェックもできていませんね、多分。早急に対応いたします。
ご報告ありがとうございました。
- Posted by 嶽花|2006-12-18 Mon 13:38
-
以前、メールフォーム対応していただいた者です。ご無沙汰しております。
今回、9.2をインストールして使わせていただいているのですが、メールフォームでチェックボックスを表示するようにしていると、「チェックを外す」設定にしていて、実際に手動でチェックを外して投稿しても、そのあとで「チェックボックスを外してください」といったエラーが表示される状態です。管理履歴には、英語でメールフォームのスパムをはじいた旨が書かれていました。
チェックボックスを出現させない設定にすると問題なくフォームメールが送信できました。ログアウト状態にして、FireFox2.0にて確認いたししました。
とりあえず現状はメールフォームの時はチェックボックス出さないようにして運営してます。お忙しいとは思いますが、お暇な時に対応していただけると幸いです。
- Posted by pushman|2006-12-19 Tue 02:30
-
嶽花さん、こんにちは。
引き続きご利用いただいているようでありがとうございます。そして、ご迷惑おかけしてすみません。
こちらで再現できなかったので、おそらくタイマー機能によりブロックされたのだと思います。タイマー機能でブロックした場合も、チェックボックスを確認するエラーメッセージが表示されるのは仕様です。エラーメッセージが表示されているときは強制的にタイマー機能が無効になり、再度チェックボックスで投稿許可の判断をしています。メンバーメールフォームの管理履歴メッセージを手抜きしていたため、同じメッセージが表示されてしまって混乱しますよね。ほんとすみません。
ただいま別件の機能追加をしております。その際には履歴を分かりやすくしますのでしばしお待ちください。
- Posted by 嶽花|2006-12-19 Tue 11:35
-
返信ありがとうございます。
ご指摘していただいた通り、タイマー機能をどちらも0に設定してみたところ、ちゃんと動作いたしました。お騒がせして申し訳ありませんでした。
機能追加の方も楽しみにしています。
- Posted by 嶽花|2006-12-19 Tue 15:22
-
0.93の方も試させていただきました。制限時間より短い時間で投稿すると、管理履歴に「最短許可時間より短い時間で投稿されました」その旨が表示されていて、大変分かりやすくなったかと思います。
ご対応していただき、ありがとうございました。
- Posted by pushman|2006-12-20 Wed 00:26
-
嶽花さん、ご報告ありがとうございます。
大変分かりやすくなったかと思います。
そう言っていただけるととても嬉しいです。また変な動作をしておりましたら、ビシッとご指摘くださいませ。よろしくお願いします。
- Posted by よー|2007-01-16 Tue 10:54
-
コメントスパムに悩まされていたので、こちらを早速導入させていだたきたいと思います。
- Posted by pushman|2007-01-17 Wed 01:44
-
よーさん
ご利用ありがとうございます。不具合や何か気が付いた点等ありましたら、お気軽にご指摘ください。
よろしくお願いします。 - Posted by いっつ|2007-01-19 Fri 01:39
-
コメントスパムがたくさんくるようになったので、使ってみました。
FireFox2.0を使用しているのですが、「チェックしてください」などの実際のチェックボックスとメッセージがずれてしまいます。
#このページはきちんと同じ行に見えています。チェックボックスだけ、メールアドレスなどを入力するテキストボックスと同じ行にあって、「チェックしてください」などのメッセージは次の行に表示されます。
もとからある「情報を記憶しておく」の部分はきちんと同じ行に表示されます。ソースをみると、メールアドレスなどを入力するタグとこのプラグインのタグの間にだけ、BRタグがないためのようです。
イメージ的には以下のように。
メールまたはWebサイト:
___________________ □
チェックを外してください
□ 情報を記憶しておく - Posted by いっつ|2007-01-19 Fri 01:40
-
あと、チェック以外の機能のみ使いたい場合に、チェックボックスの機能を無効にする仕組みもあるとよいです。
現在、英語のspamしかきていないので、それがはじければよいのです。 - Posted by pushman|2007-01-19 Fri 01:47
-
いっつさん
ご利用、ご報告ありがとうございます。
ソースをみると、メールアドレスなどを入力するタグとこのプラグインのタグの間にだけ、BRタグがないためのようです。
プラグインオプションの
「<input />の直前に出力するタグ」
「<input />の直後に出力するタグ」
をご利用ください。当サイトでは、直前に「<p>」直後に「</p>」としています。
お望みの動作は直前にのみ「<br />」を入力すれば実現可能です。チェック以外の機能のみ使いたい場合に、チェックボックスの機能を無効にする仕組みもあるとよいです。
確かにそうですね。ちょうど考えていたところなので、次回更新時には取り入れる予定です。
ご提案ありがとうございました。また何か不具合とかありましたらコメントください。よろしくお願いします。
- Posted by いっつ|2007-01-21 Sun 01:08
-
「<input />の直前に出力するタグ」
これを使ってみましたが、追加となる2行ともに適用されるみたいですね。
2行目には表示部分がないため、元からあるBRタグと重なり、1行空いてしまいました。

