&pgid();
見習い中の小沼です。
スパム防止用のPukiwikiライブラリを作成しましたので公開いたします。
**目次 [#ea670dd8]
#contents();
**spam(スパム)対策が必要になった契機 [#q2fbdcde]
当ホームページの中に[[アークウェブ プロジェクト管理方法ご紹介]]というページがあります。
そのページにPukiWikiのプラグインであるtrackerを置いているのですが、そこが今月(2006年12月)の頭ごろからスパムの標的になってしまいました。
ひどいときは一日に20件近く投稿されていました。
会社のWebサイトがスパムだらけになってしまったら、まるでメンテナンスができていないような印象を与えてしまい、会社のイメージを大きく傷つけます。
かといって、毎日手作業でスパム投稿を削除していたのでは大変ですので、今回PukiWikiのスパム防止機能を作成することになりました。
//スパム対策にはいろいろな方法があります。例えば
**Akismetについて [#w5afcea5]
Akismetというスパムチェック用のWebAPIがあります。
http://akismet.com/development/
今回のspam対策にこのAPIを利用させていただきました。
**導入方法 [#eff2131f]
今回作成した機能を利用される方は以下の手順をおこなってください。
***事前準備 [#x23bcc0e]
-webapi登録
--まずAkismetにユーザ登録をする必要があります。
---以下のページからユーザ登録をおこない、APIキーを取得してください。
http://wordpress.com/api-keys/
-Akismetクラスダウンロード
--以下のページからPHP4用のAkismetクラスをダウンロードしてください。
http://miphp.net/blog/view/php4_akismet_class
-ライブラリをダウンロード
--ここからダウンロードしてください。
#ref(akismet_filter.php);
***ファイル書き換え [#c3236629]
いくつか書き換えが必要な箇所があります。
-akismet_filter
--先ほどダウンロードしたakismet_fileter.phpに以下のような記述があります。
/*
* 使用時に以下の定数を書き換えてください。
*/
//チェック対象とするプラグイン名。カンマ区切り
define('PLUGIN_NAME_WITH_AKISMET_CHECK', 'comment,tracker');
//Akismetで取得する。APIキー
define('API_KEY', '');
//あなたのサイトのURL
define('URL','http://ark-web.jp');
//あなたのサイトのパーマリンク
define('PERMA_LINK','http://ark-web.jp');
--ここを適切な値で書き換えてください。
-plugin.php
--actionが呼ばれたときに、スパムチェック機能が呼び出されるように、plugin.phpを書き換える必要があります。
---plugin.phpの中にdo_plugin_action()という関数があります。その中にakismet_filter.phpを呼び出す記述をしてください。以下のようになると思います。
// Call API 'action' of the plugin
function do_plugin_action($name)
{
if (! exist_plugin_action($name)) return array();
if(do_plugin_init($name) === FALSE)
die_message('Plugin init failed: ' . $name);
//Akismet Spam Filter
require_once(LIB_DIR . 'akismet_filter.php');
if ( is_spam_message($_POST, $name) == "1" )
die_message("Spam check faild. Plugin:$name");
$retvar = call_user_func('plugin_' . $name . '_action');
...略
***ファイルのアップロード [#he46a883]
-ダウンロードしたakismet(Akismet.class.php )と、akismet_fileter.phpをpukiwikiのライブラリフォルダに配置してください。
pukiwiki/lib/Akismet.class.php
pukiwiki/lib/akismet_fileter.php
----
これで設定は全てです。
画面から操作し、正しく動くことを確認してください。
**内部的なこと [#qf19ece5]