[[PukiWiki/1.4/ちょっと便利に]] *Akismetによるspam(スパム)防止機能 -- konuma [#mbe35572] - 2006-12-20 (水) 13:13:16 **目次 [#n0b9f4b6] #contents **概要 [#gb302814] Akismetを利用したSpam防止libファイルです。 -[[Akismet>http://akismet.com/development/]] -[[PHP4 Akismet Class>http://miphp.net/blog/view/php4_akismet_class]] CommentやTrackerの投稿内容をチェックし、Spamを投稿させないようにすることができます。 **ダウンロード [#m30107ab] こちらからダウンロードできます。 -http://www.ark-web.jp/sandbox/wiki/190.html **使用方法 [#rbd41b87] こちらを参照してください。 -http://www.ark-web.jp/sandbox/wiki/190.html ***コメント [#xf620ae2] - 感想などお待ちしています。 -- [[小沼]] &new{2006-12-20 (水) 13:22:45}; - http://www.ark-web.jp/blog/archives/2006/12/pukiwikiakismet.html?rss10 -- &new{2006-12-21 (木) 23:47:03}; - お疲れ様です。Akismetに関する概要説明がこの上のblogエントリにしかありませんから、初めての方は手を出し辛いかもしれません (^^; -- [[henoheno]] &new{2006-12-23 (土) 13:31:00}; - ありがとうございます。確かに手を出しにくいかもしれないですね(^^; -- [[小沼]] &new{2006-12-25 (月) 09:52:17}; - GIGAZINEによる紹介((最初にpostした方へ:あまりに補足がなさすぎて、SPAMと間違われて消されていましたよ)) http://gigazine.net/index.php?/news/comments/20070127_akismet/ -- &new{2007-01-28 (日) 08:21:34}; - 1.4.7にて導入してみようとしたのですが、動きませんでした。lib/pulgin.php を書き換えて適用した時点で全てwikiが固まります -- &new{2007-01-30 (火) 03:33:10}; - 私もAkismetはBlogで使用していますが、非常に強力で重宝しています。導入して2ヶ月、一度もSPAMを突破された事がありません。PukiWikiで公式に利用できるようになると非常に嬉しいです。 -- [[AntiSpam]] &new{2007-02-07 (水) 12:06:45}; -- こうした外部のシステムを(一つじゃなく、管理者の任意の種類と数)呼べるように、anti-spam機構の下地を作ればいいんだろうなあと思っています。 -- [[henoheno]] &new{2007-02-10 (土) 21:36:25}; - クラスの仕様が変わって既に小沼さんのakismet_filter.phpの内容は古くなっているようです。以下にcommentプラグインを直接改造する例を挙げておきます。(comment.inc.php 30行目付近。<PukiWikiのURI>と<API Key>は各サイトに合わせて変更) -- &new{2007-02-09 (金) 02:14:52}; if (! isset($vars['msg'])) return array('msg'=>'', 'body'=>''); // Do nothing +////////////////////////////////////////////// +// SPAM chek by akismet +require_once(LIB_DIR.'akismet.class.php'); + +// load array with comment data +$comment = array( + 'author' => $vars['name'], + 'email' => '', + 'website' => '', + 'body' => $vars['msg'], + 'permalink' => '' +); + +// instantiate an instance of the class +$akismet = new Akismet('<PukiWikiのURI>', '<API Key>', $comment); + +// test for errors +if($akismet->errorsExist()) { // returns true if any errors exist + $akismet_msg = ''; + if($akismet->isError('AKISMET_INVALID_KEY')) { + $akismet_msg = 'akismet : APIキーが不正です.'; + } elseif($akismet->isError('AKISMET_RESPONSE_FAILED')) { + $akismet_msg = 'akisumet : レスポンスの取得に失敗しました'; + } elseif($akismet->isError('AKISMET_SERVER_NOT_FOUND')) { + $akismet_msg = 'akismet : サーバへの接続に失敗しました.'; + } + return array('msg'=>'投稿内容の確認中にエラーが発生しました.', 'body'=>$akismet_msg); +} else { + if ($akismet->isSpam()) { // returns true if Akismet thinks the comment is spam + return array('msg'=>'投稿内容の確認中にエラーが発生しました.', 'body'=>'投稿はスパムと判断されました.'); + } +} +////////////////////////////////////////////// $vars['msg'] = str_replace("\n", '', $vars['msg']); // Cut LFs - コメント以外にも全ての編集にAkismetのチェックをしたいのですがどのように改造すればいいのでしょうか? -- &new{2007-02-10 (土) 18:45:12}; -- 今の[[CVS版]](1.4.8_alpha) の [[cvs:lib/pukiwiki.php]] にはまさにそんな感じの処理があるかもしれません。GET以外の処理について、プラグインの判定と下処理をした上で、その内容を全部関数に渡すようなものが。ここをもう少し拡張して、こうした外部サービスを呼べるようにすればいいんではないかなと思っています。 -- [[henoheno]] &new{2007-02-10 (土) 21:38:24}; #comment