PukiWiki1.4.6 CGIの編集認証(前編)

「CMD.EXE TIPs」http://otnx.jp/CMD/ で使っているPukiWikiだが、レンタルサーバーのPHPバージョンアップのため、現在の1.4.4では動かなくなるので、バージョンアップしないといけない。期限は5月末。で、先週末からようやく着手。
id:otn:20041113 に、

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

ということを書いたが、旧サイトの記事に、1.4.6ではどうするんだというコメントを頂いている。「おそらく他のバージョンでも可能でしょう。」とは書いたものの、異なるバージョンで「全く同じ修正で」出来る訳は無い。「同じ考え方が使えるだろう」ということだ。


1.4.5だと、PKWK_READONLY という定数で、まとめて編集禁止にすることが出来るので、全ページ一括で編集認証を掛けるなら簡単だ。

(1) index.php では PKWK_READONLY は 1 にする
(2) index.php をコピーして、edit.php をつくり、それでは PKWK_READONLY は 0 (または未定義)にする
(3) .htaccess で edit.php にBasic認証を掛ける
(4) pukiwiki.ini.php の $script = 'http://hostname/index.php'; の後に
    if(!PKWK_READONLY) $script = 'http://hostname/edit.php'; を追加
(5) pukiwiki.ini.php では、 $edit_auth = 0; にしておく

これで、index.php 経由では全ページ編集禁止で、edit.php 経由だと全ページ編集できる。


ただし、これだと、#article や #pcommnet その他のページを変更するプラグインも無効になってしまうので、これらを使う場合はそれぞれのプラグインの、「if (PKWK_READONLY)」のところを、「if (0)」と書き換える必要がある。


ということで、やはり前回と同様の修正を考えたほうが良さそうである。
つづく。