pukiwiki ver1.4.4 CGIの編集認証

pukiwikiの編集を特定ユーザーに限る認証機能だが、apacheBasic認証機能を使っているため、PHPcgiとして実行されるときには使用できない。これを別の方法で認証を行うよう変更したので忘れないように書いておく。ver1.4.4だがおそらく他のバージョンでも可能でしょう。

(1) index.php をコピーして edit.php を作る
(2) .htaccess で edit.php にBasic認証を掛ける
(3) edit.php 内に、define('EDIT_OK','yes'); を記述
(4) pukiwiki.ini.php の $script = 'http://hostname/index.php'; の後に
  if(defined('EDIT_OK')) $script = 'http://hostname/edit.php'; を追加
(5) auth.php の function basic_auth の中の // PHP_AUTH* 変数が未定義の場合 の前に、
  return defined('EDIT_OK'); を追加

2004-11-14追記:
うーん、でもこれだと編集出来る人はすべてのページを編集できる。pukiwiki.ini.php の $edit_auth_pages での設定通りのページ単位での認証にするにはもう一工夫いる。

(5) で追加するコードを、returnを止めて
  $auth_flag = FALSE;
  if(defined('EDIT_OK') and isset($_SERVER['REMOTE_USER']))
  {
   $_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'];
   $_SERVER['PHP_AUTH_PW'] = 'pass';
  }; に変更
(6) pukiwiki.ini.php の $auth_user 定義ではパスワードをすべて 'pass' にしておく
  もちろん実際のパスワードは、edit.php のBasic認証で設定したものを入力する