official:質問箱3/608を検討しているときに思いついたのでログイン、ログアウトの機能を実装してみました。
BASIC認証に、ログアウトの仕様はありませんが、存在しないユーザー名でアクセスすることでログアウトっぽく動作してくれると期待。そのときの動作はブラウザによるらしいですが、とりあえずIE6とFirefox(Ver2.0.0.3)で動作確認しました。
[[こちらでやってます。>http://ioio.is.land.to/PukiWiki/index.php?Guest]]
///////////////////////////////////////////////// // Security settings +++ // PKWK_LOGOUT_USER +++ // User name to be used to implement logout function to the basic authorizing. +++ // basic認証にログアウトもどき機能を実装する為の、ログアウトに使用するユーザー名 +++ define('PKWK_LOGOUT_USER', 'logout'); // user logout can't be userd
// Default page name $defaultpage = 'FrontPage'; // Top / Default page $whatsnew = 'RecentChanges'; // Modified page list $whatsdeleted = 'RecentDeleted'; // Removeed page list $interwiki = 'InterWikiName'; // Set InterWiki definition here $menubar = 'MenuBar'; // Menu +++ $loginpage = 'login'; // User Login Page +++ $logoutpage = 'logout'; // User logout Page
$_LANG設定部分に追加。
+++ $_LANG['skin']['login'] = 'ログイン'; // ログイン +++ $_LANG['skin']['logout'] = 'ログアウト'; // ログアウト
$_LANG設定部分に追加。
+++ $_LANG['skin']['login'] = 'login'; // login +++ $_LANG['skin']['logout'] = 'logout'; // logout
// ------------------------------------------------------------ // Code start +++ global $read_auth;
--- <title><?php echo $title ?> - <?php echo $page_title ?></title> +++ <?php +++ function _check_user(){ +++ if (isset($_SERVER['PHP_AUTH_USER'])) +++ { +++ if ($_SERVER['PHP_AUTH_USER'] != logout) +++ { +++ return TRUE; +++ } +++ } +++ return FALSE; +++ } +++ function _show_user($message){ +++ if (_check_user()) +++ { +++ echo 'User ' . $_SERVER['PHP_AUTH_USER']; +++ return TRUE; +++ } +++ return FALSE; +++ } +++ ?> +++ <title><?php if(_show_user()) { echo ' - ';} ?><?php echo $title ?> - <?php echo $page_title ?></title>
<?php } ?> +++ <?php if ($read_auth) { ?> +++ [ +++ <?php if (_show_user()) { ?> +++ | +++ <?php _navigator('logout') ?> +++ <?php } else { ?> +++ <?php _navigator('login') ?> +++ <?php } ?> +++ ] +++ <?php } ?> <?php } // PKWK_SKIN_SHOW_NAVBAR ?> </div>
global $_LANG, $_LINK, $_IMAGE; +++ global $loginpage, $logoutpage;
$_LINK['upload'] = "$script?plugin=attach&pcmd=upload&page=$r_page"; +++ $_LINK['login'] = "$script?" . rawurlencode($loginpage); +++ $_LINK['logout'] = preg_replace('#://#', '://' . PKWK_LOGOUT_USER . ':nopass@', $script) . "?" . rawurlencode($logoutpage);
ログインページ用にルール追加。
$datetime_rules = array( +++ '&_authuser;' => $_SERVER['PHP_AUTH_USER'],
///////////////////////////////////////////////// // User definition $auth_users = array( // Username => password 'guest' => 'guest', 'guest1' => 'guest1', 'guest2' => 'guest2', ); ///////////////////////////////////////////////// // Authentication method $auth_method_type = 'pagename'; // By Page name //$auth_method_type = 'contents'; // By Page contents ///////////////////////////////////////////////// // Read auth (0:Disable, 1:Enable) $read_auth = 1; //これが1の場合にログイン、ログアウト機能が有効。 $read_auth_pages = array( // Regex Username '#^login$#' => 'guest,guest1,guest2', //全ユーザ名を記載すること。 '#^Guest\/.*#' => 'guest,guest1,guest2', );
&_authuser;さん、PukiWikiへようこそ。
ログアウトしました。