日記
権限を伴わないCookieによるモード変更 2 (13:50)Edit

Wiki系(WikiEngine)について語るスレPart2http://pc2.2ch.net/test/read.cgi/php/1060739206/)で、「権限を伴わないCookieによるモード変更」に関係しそうな話題が出ていたんで、具体的にどういう感じになるのか、うちのPukiWikihttp://ishinao.net/pukiwiki/)に実装してみた。メニュー右端の「編集モード」とか「通常モード」とかでメニューのモードが切り替わる。デフォルトでは編集・管理系メニューは表示されない。

ちなみにちゃんと動作テストしていない(おい)。でもまあ、skinに、Cookieを見てメニューの表示非表示を切り替える条件文と、モード(Cookie)切り替え用のリンクを追加しただけだし、モード切替スクリプト(setmode.php)は、

require_once('pukiwiki.ini.php');
setcookie('pwmode', intval($_GET['mode']), time()+60*60*24*30);
if (isset($_SERVER['HTTP_REFERER'])) {
header('Location: '.$_SERVER['HTTP_REFERER']);
} else {
header('Location: '.$script);
}

だけの処理しかしていないから、多分動くと思う($script設定ってPukiWikiでは必須でないんだっけ? その辺ちょっとやばいかも)。本当ならば、メニューの文言とかをもうちょっとわかりやすく書き換えたいし、モード切替リンクはもうちょっと違う見せ方をしたいところだったけど、まあその辺はみなさん好きなようにどうぞ。あと、もっと細かくモードを持たせてもいいかもね。煩雑にならないならば。

ちなみに、このサイトで使っているシステム(wikilog)は、権限Cookie(要はログイン情報などを持つセッションCookie)を使ったモード変更の方を実装しているんで、管理者としてログインしたときだけ、管理用メニューが追加されるようになっている。WikiではなくCMS系ならば、権限とインターフェースが1対1で対応して構わない。

Wikiみたいに、権限とインターフェースが1対1で対応しない(権限ではなく、ユーザーの意志によってやりたいことが変わる)場合に、権限を伴わないCookieでインターフェースを切り替える手法が有効になると思う。

Published At2003-09-19 00:00Updated At2003-09-19 00:00