kcaptchaの導入について
- comment_kcaptcha.inc.php
- comment2_kcaptcha.inc.php
- pcomment_kcaptcha.inc.php
- pcomment2_kcaptcha.inc.php
などのプラグインです。
※修正対応はすべて力任せにやっているので、保証できません。参考にして頂いて、実際の修正は、ご自身の判断で行ってください。
問題点
文字化け
- 導入するプラグインとkcaptchaとpukiwiki(utf8版)の文字コードの相性が悪い(素人の理解はこの程度(>_<))ので、各プラグイン内に記述されている日本語メッセージが文字化けして表示できなかった。
- この現象は、ソース保存時の文字コード指定を変えるような小細工では、ソースからWeb表示にまで、文字を正しく連動させることができない。
- comment_kcaptcha.inc.php
- comment2_kcaptcha.inc.php
- pcomment_kcaptcha.inc.php
- pcomment2_kcaptcha.inc.php
の各プラグイン内に、メッセージの euc=>utf8 変換ステップ を組み込むことで解決した。
●HTMLタグを記述する部分に入る前に、次を記述 $desc_str = eucjp2utf8($desc_str);
●プラグインの最後部に追記 function eucjp2utf8($eucjp) { return mb_convert_encoding($eucjp, 'UTF-8', 'eucjp'); }
※comment_kcaptcha.inc.phpとpcomment_kcaptcha.inc.phpを同じページに記述すると画面が真っ白になってしまいます。 同じページに記述することは、基本的にはないのですが気持ち悪い。
kcaptchaが両方のプラグインを呼び出すので、ファンクション名がユニークでなくなるからのような気がします。あんまり意味は、分かりません(^_^;) そうでした。ファンクションの名称を変えれば、同じページに記述しても問題ありませんでした。
lib/func.php に記述すれば、各プラグインには記述する必要はなくなります。 (pukiwikiにそのようなファンクションがあれば、それを使えば良いのだろうと思いますが、確認していません。)
認証用画像が表示されないことがある
静的URL対応(ディレクトリ偽装)しているので、認証用画像が表示されない。 各プラグインの認証用画像の記述を変更して解決しました。
【変更後】 <img src="$script/$kcaptcha_img" />
これだけで上手く行かない場合は、どこかに $script = get_script_uri(); と記述すると、上手くいくようです。
article_kcaptcha.inc.php
http://nao.s164.xrea.com/td/2007-11-07.html
関連情報
コメントの認証
http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F197
http://meteora.ucsd.edu/~kyoshimura/?IT%20memo%2Fwikimemo%2Fkcaptcha
処理後の戻り先URL
処理後のURLの戻り先が私の趣味に合わないので修正
- comment_kcaptcha.inc.php
- comment2_kcaptcha.inc.php
- pcomment_kcaptcha.inc.php
- pcomment2_kcaptcha.inc.php
は、それぞれ
- comment.inc.php
- comment2.inc.php
- pcomment.inc.php
- pcomment2.inc.php
を呼び出して処理されるので両方を修正
対応内容(通常処理用)
赤文字:追加
青文字:削除
- comment.inc.php
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
return $retvars; - comment2.inc.php
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
return $retvars; - pcomment.inc.php
- pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($refer)) . '/');
exit;※恐らく、ディレクトリ偽装パッチにて対応された。 (自分では対応していない)
- if (! isset($vars['msg']) || $vars['msg'] == '') {
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
return array(); }
//if (! isset($vars['msg']) || $vars['msg'] == '') return array();
- pkwk_headers_sent();
- pcomment2.inc.php
- pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($refer)) . '/');
//header('Location: ' . get_script_uri() . '?' . rawurlencode($refer));
exit; - if (! isset($vars['msg']) || $vars['msg'] == '') {
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
return array();
}
//if (! isset($vars['msg']) || $vars['msg'] == '') return array();
- pkwk_headers_sent();
- comment_kcaptcha.inc.php
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
// comment.inc.phpにバトンタッチ
return plugin_comment_action();
- comment2_kcaptcha.inc.php
pkwk_headers_sent();
header('Location: ' . get_script_uri() . anchor_replace(rawurlencode($vars['refer'])) . '/');
return plugin_comment2_action();
- pcomment_kcaptcha.inc.php
なし
- pcomment2_kcaptcha.inc.php
なし
対応内容(認証文字入力エラー用)
エラーのときは、別途作成したエラーページに遷移するように修正しました。
- ~~/error001 というエラーページを作成。
- プラグインの修正
- comment_kcaptcha.inc.php
- comment2_kcaptcha.inc.php
- pcomment_kcaptcha.inc.php
- pcomment2_kcaptcha.inc.php
において次のような修正を行いました。
$temp_err = WRONG_WARNING ;
$temp_err = eucjp2utf8($temp_err);
pkwk_headers_sent(); header('Location: ' . get_script_uri() . 'error001' . '/');
return array('msg'=>$temp_err);
//return array('msg'=>WRONG_WARNING);
関連書籍





最近のコメント
9週 5日前
10週 12時間前
10週 13時間前
10週 13時間前
10週 14時間前
10週 14時間前
10週 15時間前
10週 15時間前
10週 15時間前
14週 1日前