lolipopでpukiwikiの認証機能が使えない

pukiwikiで編集認証をかけようとして設定をしたら、正しいパスワードを入力してもエラーになりました。
原因を検索していたところ、どうもlolipopのCGIPHPが原因でBASIC認証ができないとのこと。

http://pukiwiki.sourceforge.jp/?PukiWiki%2FInstall%2F%E3%83%A6%E3%83%BC%E3%82%B6%E8%AA%8D%E8%A8%BC
>>CGIPHPPukiWikiを動作させた場合は、利用できません。

解決策

以下のページを参照して導入したところあっさり解決しました。

http://wiki.wetcradle.com/index.php?pukiwiki%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Flogin.inc.php

fc2wikiが荒らされて消えたので、Pukiwikiに移行してみた

UTF-8化することで解決
参考URL:http://pukiwiki.sourceforge.jp/dev/?PukiWiki%2F1.4%2FUTF-8%B2%BD

case 'ja':
define('SOURCE_ENCODING', 'EUC-JP');
define('CONTENT_CHARSET', 'EUC-JP');
break;

case 'ja':
define('SOURCE_ENCODING', 'UTF-8');
define('CONTENT_CHARSET', 'UTF-8');
break;


荒らし対策
参考ページ:美麻Wiki 美麻Wikiでシステム的に修正している点
URL:http://www.miasa.info/index.php?%C8%FE%CB%E3Wiki%A4%C7%A5%B7%A5%B9%A5%C6%A5%E0%C5%AA%A4%CB%BD%A4%C0%B5%A4%B7%A4%C6%A4%A4%A4%EB%C5%C0#ofa18e88

spam_filter.phpの導入

  • 導入
    • ダウンロードしたファイルがEUCになってる場合は、UTF-8に変更して保存する。
    • 1.4.7.zipを解凍してルートディレクトリに上書き保存する。dns_get_ns.cacheは属性を「777」に変更する。
    • recaptchalib.phpを「plugin/」にアップロード
    • Akismetフィルタ
      • web APIに登録してAPI keyを取得

URL:http://wordpress.com/api-keys/

      • akismet_filter.php、akismet.class.phpを「lib/」にアップロード

以下を追記する。

このページを参考にした。
スパム対策/spam_filter.php - Pukiwikiで作るパズドラ攻略Wiki

/////////////////////////////////////////////////
// SpamFilter

//// reCAPTCHA の設定
define('SPAM_FILTER_RECAPTCHA_PUBLICKEY', '各自取得したキーを貼り付け');
define('SPAM_FILTER_RECAPTCHA_PRIVATEKEY', '各自取得したキーを貼り付け');
//// スパムと判断する条件を指定する
define('SPAM_FILTER_COND', '#useragent() or #filename() or #atag() or #ipbl() or #onlyeng() or #urlnsbl() or #urlbl() or #ngreg()');
//// CAPTCHAでのチェックをする条件を指定する
define('SPAM_FILTER_CAPTCHA_COND', '#ipcountry() or #ipdnsbl()');
//// 各フィルタ共通で設定できる指定
// URLでのマッチで自ドメインなどの無視すべきURL(ホワイトリスト)
define('SPAM_FILTER_WHITEREG', '/(rtwiki\.net)/i');
//// filename  - アップロードファイル名によるフィルタ
// アップロードを許可しないファイル名の正規表現
define('SPAM_FILTER_FILENAME_REG', '/\.html$|\.htm$|\.exe$|\.swf$|\.php$/i');
//// ipdnsbl   - クライアントのIPをDNSBLでチェック
define('SPAM_FILTER_IPDNSBL_DNS', 'bsb.spamlookup.net');
//// ipbl      - クライアントのIPやホスト名によるフィルタ
// 許可しないIPやホスト名の正規表現
define('SPAM_FILTER_IPBL_REG', '/(ezserve8\.net|ubiquityservers\.com|your-server\.de|purewebtech\.net|comcast\.net)/');
//// urlbl     - URLがブラックリストに入っているか確認
// URLのブラックリスト ホスト名でもIPでも可
define('SPAM_FILTER_URLBL_REG', '/(kinshi\.domain\.jp|kinshi\.domain\.com)/i');
//// ngreg     - 内容の正規表現フィルタ
// コメント中で許可しない内容の正規表現
define('SPAM_FILTER_NGREG_REG', '/(死ね|働け)/i');
//// ipcountry - クライアントのIPの国をチェック
// マッチさせる国を指定する正規表現 JPを追加すると動作確認できる
define('SPAM_FILTER_IPCOUNTRY_REG', '/(CN|KR|UA|HK|US)/');
    • フィルタで拒否したらログを取る
      • フォルダを作成
        • ルートディレクトリに「spam_filter」フォルダを作成し、属性を「777」に変更する。
        • フォルダの中に、「.htaccess」と「.htpasswd」を作成する。(検索すると作成用ウェブツールが出てくる)
      • spam_filter.phpを編集する。

「$spamfilter->is_spam()」で検索

    if ($spamfilter->is_spam())
        die_message( "Spam check failed. Plugin:". $spamfilter->plugin_name ." Match:". $spamfilter->message ."<br>\n" );

上記の部分を以下のように書き換える

	$spamfilter = new SpamFilter($_POST, $plugin);
	 
	// Client Information
	$hp = $script;
	$ua   = $_SERVER["HTTP_USER_AGENT"] ? $_SERVER["HTTP_USER_AGENT"] : '';
	$addr = $_SERVER['REMOTE_ADDR'];
	if (! $_SERVER['REMOTE_HOST'])
			$_SERVER['REMOTE_HOST'] = gethostbyaddr($addr);
	$host = $_SERVER['REMOTE_HOST'];
	// Pukiwiki Information
	$ref  = isset($vars['refer']) ? $vars['refer'] : '';
	$page = isset($vars['page']) ? $vars['page'] : '';
	$page = $page == '' ? $ref : $page;

	if ($spamfilter->is_spam()) {
		$log  = strftime('%y/%m/%d %H:%M:%S') . "\t" . $addr . "\t";
		$log .= $host . "\t" . $page . "\t" . $spam_type . "\n";
		$fp = fopen(DATA_HOME . 'spam_filter/' . strftime('%y%m%d') . '.ignore.log', 'a');
		fwrite($fp, $log);
		fclose($fp);
	       die_message( "Spam check failed. Plugin:". $spamfilter->plugin_name ." Match:". $spamfilter->message ."<br>\n" );
		}
		return false;