†pukiwiki1.4.7の標準認証にsession(cookie)を使って認証できる機能をつけました。CGI版PHPでも認証が機能します(さくらインターネットで使っています)認証が必要なページにアクセスすると自動的にログイン画面が表示されます。login.inc.phpというプラグインとauth.phpを変更して実装しています。†phpのsessionでは、cookieを使います。cookieが使えない場合は、URLにセッション情報が表示されます。いずれの場合も、ユーザ・パスワードが一致しなくても、認証された状態になってしまう危険性が指摘されています。このプラグインでは、とりあえずsession_regenerate_id(TRUE)を入れています。注意」などで検索下さい。本当にみられたくない場合は、別フォルダにpukiwikiをインストールし、それぞれ.htaccessで管理する方が確実です。お互いにInterWikiで連携してlogin.inc.phpは以下のような場合には便利かもしれません。編集を許可するユーザをとりあえず指定したい。「userauth.php」などを使って、許可するユーザ・パスワードを頻回に変更したい。†login.inc.phpをpluginディレクトリに入れてください。http://pw1.atcms.jp/pikky/index.php?plugin=attach&pcmd=open&file=login.inc.php.txt&refer=FrontPagelib/auth.phpを以下のファイルと置き換えてください。pukiwiki.ini.phpに以下の1行を入れてください。以下のパッチをpukiwikiのインストールディレクトリからあててください。htmlspecialcharsを追加。その他:get_script_uri()の使用。login-20070510.patchsessionに綴り間違いがあったので修正。session_regenerate_id(TRUE)にする。pukiwiki.ini.php機能を有効にしてください(すでに使用している人は不要です。userauth.phpを使っている人も不要です)。secretという名前が入っているページ名に編集・参照両方の認証をつける。pukiwiki.ini.phpを以下のようにする。'authority',);後は、認証が必要なページにアクセスすると、自動的にログイン画面が表示されます。ログインできると、そのページが開きます。ログインに失敗すると、成功するまでログイン画面が表示されます。一度ログインすると、cookieが有効である限り、認証は不要です。ページにアクセスしてください。ログインしていた場合はログアウト画面が表示され、まだの場合はログイン画面が表示されます。†&login();現在のログインユーザ名が表示され、ログイン画面へのリンクが表示されます。MenuBarに入れておくと、ログイン画面か、現在のユーザ名が表示されるので便利です。#login現在のログインユーザ名が表示され、ログイン画面またはログアウト画面が表示されます。pukiwiki.ini.php$auth_typeという変数を追加しました。'session';session_start();session_regenerate_id(TRUE);を有効にするとsession認証になります。消すと、標準のHTTP認証に戻ります。'session'かどうかで処理を分けられません。sessionを使わない人にとっては、session_startは余計な処理なので、仕方なく、pukiwiki.ini.phpにまとめて書きました。'session');などとすればよいのかもしれませんけど。プラグインの域を超えてますね。basic_authの部分だけです)plugin/login.php実際にログイン、ログアウト画面を表示し、認証します。†さくらインターネットで、ユーザ認証を行わなければならなったものの、うまくいかず。サイトを探して、CGI版PHPではBASIC認証ができないことが判明。諦めきれず、pukiwikiでセッション管理をしているサイトがあるはずだと探していたら、以下のサイトで、セッションの使い方とpluginの作り方をみる。ありがとうございました。teanan.homeip.netそれで、pukiwiki1.4.7のauth.phpをみてみたら、認証している部分はbasic_authだけということに気づく。これならいけるじゃん!と改造を決意。basic_authを全部消して実装する。やってみたらあっさり動いた。PHPのセッションには問題があるが、「そんなに頑固なセキュリティじゃないけど、編集できないページも作れますよ」と説明できればよいぐらいの立場の人もいるに違いないと思いはじめる。これだけの改造で動くようになった、pukiwikiとauth.phpのすばらしさに感謝して、公開することを決意。元のauth.phpを復活させ、auth_typeで切り替えられるようにし、いくつかのサーバでインストールテスト。12:40:51「userauth.php」を使っているのであれば、pukiwiki.ini.phpには、以下の1行を入れるだけで動くと思います(後は、一緒でlib/auth.phpを上書きし、plugin/login.php.incを追加)。今、確認できないのですみません。session_start();session_regenerate_id();出来ました。session_start();sessio_regenerate_id();が、出力されました。sessionのnが抜けてました。14:12:55ご報告ありがとうございます。動いてホッとしてます^o^。つづり間違い、ご連絡ありがとうございました。16:52:40sessionでユーザー管理ですか。CGI版PHPユーザーは待ち望んでいた機能ではないでしょうか。細かい突っ込みですが、$scriptはglobalで取得せずにget_script_uri()で取得するのが推奨されています。dev:プラグイン/開発者向けの補足情報参照。18:36:41お疲れ様です。rawurlencode($page)、プラグインのところにhtmlspecialchars($script)が要るでしょう。ようなチェックは怖いです。