自作プラグイン/login.inc.php
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
** login.inc.php [#v31d901f]
|RIGHT:100|LEFT:360|c
|~サマリ|PHPセッションを使った認証プラグイン(CGI版PHPでも...
|~リビジョン|0.1|
|~対応バージョン|1.4.7|
|~投稿者|[[pikky]]|
|~投稿日|&new{2007-05-10 (木) 00:46:03};|
**概要 [#t6644bd0]
-pukiwiki1.4.7の標準認証にsession(cookie)を使って認証で...
-CGI版PHPでも認証が機能します(さくらインターネットで使っ...
-認証が必要なページにアクセスすると自動的にログイン画面が...
-login.inc.phpというプラグインとauth.phpを変更して実装し...
***注意 [#r3e5d736]
phpのsessionでは、cookieを使います。また、cookieが使えな...
''本当にみられたくない場合は、別フォルダにpukiwikiをイン...
login.inc.phpは以下のような場合には便利かもしれません。
-編集を許可するユーザをとりあえず指定したい。
-「[[userauth.php>自作プラグイン/userauth.php]]」などを使...
**デモサイト [#v870aef6]
-%% http://pw1.atcms.jp/pikky/ %%
**インストール方法 [#ybeee52e]
***自分でファイルを更新する場合 [#a0128d8c]
-login.inc.phpをpluginディレクトリに入れてください。
--plugin/login.inc.php.txt %% http://pw1.atcms.jp/pi...
-lib/auth.phpを以下のファイルと置き換えてください。
--lib/auth.php.txt %% http://pw1.atcms.jp/pikky/inde...
-%%pukiwiki.inc.php%% pukiwiki.ini.phpに以下の1行を入れ...
$auth_type = 'session'; session_start();session_regenera...
***パッチを使う場合 [#e4f3a9f2]
以下のパッチをpukiwikiのインストールディレクトリからあて...
% patch -p1 < login-20070511.patch
-login-20070511.patch %% http://pw1.atcms.jp/pikky/i...
-login-20070511.patch [[ミラー(このページのコメント内)>...
--セキュリティ関係:rawurlencode, htmlspecialcharsを追加。
--その他:get_script_uri()の使用。変数の整理など。
-login-20070510.patch
--sessionに綴り間違いがあったので修正。session_regenerate...
-login-20070509.patch 初期バージョン
**使い方 [#g28bc377]
-まず、%%pukiwiki.inc.php%% pukiwiki.ini.php機能を有効に...
例えば、
--secretという名前が入っているページ名に編集・参照両方の...
--ユーザ名は authority パスワードは、hirakedoor
には、%%pukiwiki.inc.php%% pukiwiki.ini.phpを以下のように...
$auth_users = array(
'authority' => '{x-php-md5}' . md5('hirakedoor'),
);
$read_auth = 1;
$read_auth_pages = array(
'#secret#' => 'authority',
);
$edit_auth = 1;
$edit_auth_pages = array(
'#secret#' => 'authority',
);
-後は、認証が必要なページにアクセスすると、自動的にログイ...
-一度ログインすると、cookieが有効である限り、認証は不要で...
-自分でログイン・ログアウトしたい場合は、?plugin=login ...
*loginプラグインのおまけ [#d17d57c0]
-&login();
--現在のログインユーザ名が表示され、ログイン画面へのリン...
--MenuBarに入れておくと、ログイン画面か、現在のユーザ名が...
-#login
--現在のログインユーザ名が表示され、ログイン画面またはロ...
**説明 [#h018642b]
-%%pukiwiki.inc.php%% pukiwiki.ini.php
--$auth_typeという変数を追加しました。
---
$auth_type = 'session';session_start();session_regenerat...
を有効にするとsession認証になります。
---消すと、標準のHTTP認証に戻ります。
-- session_start()といった初期化を、最初、lib/auth.phpに...
--index.phpに、define(PKWK_AUTH, 'session');などとすれば...
-lib/auth.php
-- $auth_type == sessionの場合の処理を加えています(functi...
-plugin/login.php
--実際にログイン、ログアウト画面を表示し、認証します。
**ライセンス [#s9c79512]
GPLです。
**経緯 [#ffa8fc02]
さくらインターネットで、ユーザ認証を行わなければならなっ...
諦めきれず、pukiwikiでセッション管理をしているサイトがあ...
-[[teanan.homeip.net>teanan:自作プラグイン/session.inc.ph...
それで、pukiwiki1.4.7のauth.phpをみてみたら、認証している...
やってみたらあっさり動いた。
PHPのセッションには問題があるが、「そんなに頑固なセキュリ...
元のauth.phpを復活させ、auth_typeで切り替えられるようにし...
**コメント [#o6575709]
- 「[[userauth.php>自作プラグイン/userauth.php]]」と併用...
-- 「userauth.php」を使っているのであれば、pukiwiki.ini.p...
$auth_type = 'session'; session_start();session_regenera...
- 出来ました。どうもありがとうございました(^^)
ところで、パッチを適用すると、
$auth_type = 'session'; session_start();session_regenera...
ではなく、
$auth_type = 'session'; session_start();sessio_regenerat...
が、出力されました。sessionのnが抜けてました。 -- [[サイ...
-- ご報告ありがとうございます。動いてホッとしてます^o^。...
- sessionでユーザー管理ですか。いいですね。CGI版PHPユーザ...
-- [[dev:プラグイン/開発者向け]]の補足情報参照。
-- plugin_login_inline()の方は、global宣言がないので空に...
- お疲れ様です。Locationヘッダーの部分に rawurlencode($pa...
- ソース確認いただいてありがとうございます。ご指摘のあっ...
- 「define('PKWK_READONLY', 1);」の時に、「&login();」と...
--「define(PLUGIN_LOGIN_HIDE_LOGIN, 1);」をlogin.inc.php...
- 全ページ読みはOkで編集だけユーザ認証を必要にする場合、$...
--ありがとうございます。'#*#'がいいと思いますが、結果は同...
- Operaの9.20ではログイン出来ないようです。何か設定が間違...
--後でoperaで試してみますが、クッキーがonになっているかど...
-- クッキーはonになっています。Safariも動作が怪しい(編集...
-- すみませんpagesの指定で、一度 ' ' にしてしまって、その...
- さくらに設置した1.4.7_notbに対してFirefox2.0.0.4で問題...
-- それでいいと思います。(そもそもpukiwiki.inc.phpは無い...
- [[欲しいプラグイン/286]]のものです。使わさせて頂きます...
- 単語検索の時、文字を入力して検索しようとするとなぜか認...
-- ログインしていないときに、$auth_flag を無視して必ずロ...
-- こう変えたらどうですか? -- &new{2009-11-02 (月) 11:1...
// require valid user
if ($auth_type == 'session'){
- if (!isset($_SESSION['login_user']) ) { // not login ...
+ if ($auth_flag && !isset($_SESSION['login_user']) ) {...
header("Location: " . get_script_uri() . "?plugin=lo...
}
- if ( !PKWK_READONLY &&
+ if ( !PKWK_READONLY && isset($_SESSION['login_user'])...
in_array($_SESSION['login_user'], $user_list))
{
return TRUE; // Auth success
}
- さくらインターネットを使ってるので入れてみました。 puk...
-- auth.phpがクラックされてませんか? 先頭にSPAMが入って...
-- クラックされているのではなく、作者のGoogleAdSenseが挿...
-- 失礼。アフィリエイトだったんですね。その部分を削除した...
-- 2008/1/13の方と同じ症状でしたが、これは「自分でファイ...
- まだここに書き込んでも大丈夫かな?&br;userauthと併用(...
-- 私もbooさんと同じ現象です。#ref()を2個以上使用すると2...
-- 私も同じ現象です。 ref.inc.php の PLUGIN_REF_DIRECT_AC...
-- pukiwiki.ini.phpのsession_regenerate_idの行をコメント...
--- それは[[自作プラグイン/login.inc.php#説明>自作プ...
--- あ、ここの説明だと1行で全部書かれていますね。私の使...
-- [[自作プラグイン/imgfolder.inc.php]] を ref の代わりに...
--- あと、編集できなくなったページは、ls2_1 などで使って...
- 動作環境:win2003srv,iis [編集の認証]ログイン画面でID...
-- 私も上記の方と同じ症状で,編集を押してログイン画面が出...
-- ログイン後は、閲覧用のURL にリダイレクトするようになっ...
- 久しぶりに書き込みます。&br;本プラグインでかなり楽をさ...
-- Firefoxだと覚えるかどうかの選択肢が出たような。ブラウ...
-- 自己レスです。&br;PHP初心者ですが、他のソースなど参考...
- 編集ページ(アドレスにcmd=edit)があるページへのアクセ...
-- edit_authのみ有効にすればいけるんじゃないでしょうか? ...
-- edit_authのみ有効にしているのですが、なぜか編集制限の...
- 無事に設置できました。ところで、1度ログオンしてから画面...
- 1.4.7_notb@さくら でFirefox3.0.6で問題なく動作しました...
- ありがとうございます。助かりました。 -- [[kuma]] &new{2...
- 利用したいと考えているのですが、どこからダウンロードす...
-- 上の''[[インストール方法>#ybeee52e]]''からダウンロード...
- ありがとうございます。パッチをダウンロードして設定しま...
- ロリポップ!レンタルサーバーで特に修正することなく動き...
- 動作報告です。さくらで去年の一時期からうまく認証できな...
- 利用させていただいています。ロリポのCGIPHP5で動作確認。...
- さくらのレンタルサーバーでやってみたんですが何度認証し...
- secedit.inc.phpと共存しなかったです。それぞれ単独では支...
- >GegegeMokekeさん、実際のところ、どのように改造(?)すれ...
- さくらインターネットに入れましたが、何度editをしようと...
- ロリポップで問題なく動作しました。ありがとうございまし...
- 便利なプラグインありがとうございます。ところで添付ファ...
- あれ、いまの時点でダウンロードできないのですけど・・・...
- ダウンロードできなくなっています>< -- &new{2011-04-0...
- アーカイブもない・・・ http://replay.waybackmachi...
- 上げようにも管理者パスがいるのかしら -- &new{2011-04-0...
- [[質問箱5/49]] -- &new{2011-04-10 (日) 10:39:44};
- こうなってる? -- [[Logue]] &new{2011-04-17 (日) 13:05:...
-- &aname(login_inc_php_txt){};file: login.inc.php.txt
<?php
/////////////////////////////////////////////////
// login.inc.php
//
// 2007/5/11 無駄な変数を除いて、分かりやすく変更. get_s...
// htmlspecialcharsをつけた。
// 2007/5/9 オリジナル//
/////////////////////////////////////////////////
/* initialize
function plugin_login_init()
{
}
*/
function plugin_login_inline()
{
if(isset($_SESSION['login_user'])){
$msg = $_SESSION['login_user'];
$msg .= ' <a href="' . get_script_uri() . '?plu...
} else {
$msg = '<a href="' . get_script_uri() . '?plugi...
}
return $msg;
}
function plugin_login_convert()
{
if(isset($_SESSION['login_user'])){
return _get_logout_form();
}
return _get_login_form();
}
function plugin_login_action()
{
global $vars, $auth_users;
if($vars['pcmd']=='login')
{
if( isset($vars['pass'])
&& isset($vars['user'])
&& isset($auth_users[$vars['user']])
&& pkwk_hash_compute($vars['pass'], $auth_users[ $var...
{
// login success
$_SESSION['login_user'] = $vars['user'];
header('Location: ' . get_script_uri() ...
return;
}
// login fail
unset($_SESSION['login_user']);
$body = "!!! LOGIN FAILED !!!" . _get_login_form();
}
else if($vars['pcmd']=='logout')
{
$body = '';
if( isset($_SESSION['login_user'])) {
$body = htmlspecialchars($_SESSION['login_user']) . "...
unset($_SESSION['login_user']);
}
$body .= _get_login_form();
}
else
{
if (!isset($_SESSION['login_user']) ) {
$body = _get_login_form();
} else {
$body = _get_logout_form();
}
}
return array('msg' => 'login', 'body' => $body);
}
function _get_login_form(){
global $vars;
$script = htmlspecialchars(get_script_uri());
$s_referer= htmlspecialchars($vars['referer']);
return <<<EOD
<div>
<form action="$script" method="post">
<input type="hidden" name="cmd" value="login" />
<input type="hidden" name="pcmd" value="login" />
<input type="hidden" name="referer" value="$s_refere...
User Name<br /><input type="user" name="user" size="...
Password<br /><input type="password" name="pass" size...
<input type="submit" value="login" />
</form>
</div>
EOD;
}
function _get_logout_form(){
global $vars;
$script = htmlspecialchars(get_script_uri());
$s_referer= htmlspecialchars($vars['referer']);
$user = $_SESSION['login_user'];
return <<<EOD
<div>
Current User : $user
<form action="$script" method="post">
<input type="hidden" name="cmd" value="login" />
<input type="hidden" name="pcmd" value="logout" />
<input type="hidden" name="referer" value="$s_referer...
<input type="submit" value="logout" />
</form>
</div>
EOD;
}
?>
-- &aname(login-20070511_patch){};file: login-20070511.pa...
diff -urN pukiwiki-1.4.7_notb/lib/auth.php pukiwiki-1.4....
--- pukiwiki-1.4.7_notb/lib/auth.php 2005-06-13 23:02:07...
+++ pukiwiki-1.4.7_notb_login/lib/auth.php 2007-05-11 16...
@@ -168,7 +168,7 @@
// Basic authentication
function basic_auth($page, $auth_flag, $exit_flag, $aut...
{
- global $auth_method_type, $auth_users, $_msg_auth;
+ global $auth_method_type, $auth_users, $_msg_auth, $au...
// Checked by:
$target_str = '';
@@ -185,43 +185,51 @@
if (empty($user_list)) return TRUE; // No limit
- $matches = array();
- if (! isset($_SERVER['PHP_AUTH_USER']) &&
- ! isset($_SERVER ['PHP_AUTH_PW']) &&
- isset($_SERVER['HTTP_AUTHORIZATION']) &&
- preg_match('/^Basic (.*)$/', $_SERVER['HTTP_AUTHORIZA...
- {
-
- // Basic-auth with $_SERVER['HTTP_AUTHORIZATION']
+ // require valid user
+ if ($auth_type == 'session'){
+ if (!isset($_SESSION['login_user']) ) { // not login ...
+ header("Location: " . get_script_uri() . "?plugin=lo...
+ }
+ if ( !PKWK_READONLY &&
+ in_array($_SESSION['login_user'], $user_list))
+ {
+ return TRUE; // Auth success
+ }
+ } else { // $auth_type == 'basic'
+ $matches = array();
+ if (! isset($_SERVER['PHP_AUTH_USER']) &&
+ ! isset($_SERVER ['PHP_AUTH_PW']) &&
+ isset($_SERVER['HTTP_AUTHORIZATION']) &&
+ preg_match('/^Basic (.*)$/', $_SERVER['HTTP_AUTHORIZ...
+ {
+ // Basic-auth with $_SERVER['HTTP_AUTHORIZATIO...
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW...
explode(':', base64_decode($matches[1]));
+ }
+ if ( ! PKWK_READONLY &&
+ isset($_SERVER['PHP_AUTH_USER']) &&
+ in_array($_SERVER['PHP_AUTH_USER'], $user_list) &&
+ isset($auth_users[$_SERVER['PHP_AUTH_USER']]) &&
+ pkwk_hash_compute(
+ $_SERVER['PHP_AUTH_PW'],
+ $auth_users[$_SERVER['PHP_AUTH_USER']]
+ ) == $auth_users[$_SERVER['PHP_AUTH_USER']])
+ return TRUE; // Auth success
}
- if (PKWK_READONLY ||
- ! isset($_SERVER['PHP_AUTH_USER']) ||
- ! in_array($_SERVER['PHP_AUTH_USER'], $user_list) ||
- ! isset($auth_users[$_SERVER['PHP_AUTH_USER']]) ||
- pkwk_hash_compute(
- $_SERVER['PHP_AUTH_PW'],
- $auth_users[$_SERVER['PHP_AUTH_USER']]
- ) !== $auth_users[$_SERVER['PHP_AUTH_USER']])
- {
- // Auth failed
- pkwk_common_headers();
- if ($auth_flag) {
- header('WWW-Authenticate: Basic realm="' . $_msg_aut...
- header('HTTP/1.0 401 Unauthorized');
- }
- if ($exit_flag) {
- $body = $title = str_replace('$1',
- htmlspecialchars(strip_bracket($page)), $title_cann...
- $page = str_replace('$1', make_search($page), $title...
- catbody($title, $page, $body);
- exit;
- }
- return FALSE;
- } else {
- return TRUE;
+ // Auth failed
+ pkwk_common_headers();
+ if ($auth_flag && $auth_type !== 'session'){
+ header('WWW-Authenticate: Basic realm="' . $_msg_auth...
+ header('HTTP/1.0 401 Unauthorized');
+ }
+ if ($exit_flag) {
+ $body = $title = str_replace('$1',
+ htmlspecialchars(strip_bracket($page)), $title_canno...
+ $page = str_replace('$1', make_search($page), $title_...
+ catbody($title, $page, $body . '....');
+ exit;
}
+ return FALSE;
}
?>
diff -urN pukiwiki-1.4.7_notb/plugin/login.inc.php pukiw...
--- pukiwiki-1.4.7_notb/plugin/login.inc.php 1970-01-01 ...
+++ pukiwiki-1.4.7_notb_login/plugin/login.inc.php 2007-...
@@ -0,0 +1,117 @@
+<?php
+/////////////////////////////////////////////////
+// login.inc.php
+//
+// 2007/5/11 無駄な変数を除いて、分かりやすく変更. get_...
+// htmlspecialcharsをつけた。
+// 2007/5/9 オリジナル//
+/////////////////////////////////////////////////
+
+
+/* initialize
+function plugin_login_init()
+{
+}
+*/
+
+function plugin_login_inline()
+{
+ if(isset($_SESSION['login_user'])){
+ $msg = $_SESSION['login_user'];
+ $msg .= ' <a href="' . get_script_uri() . '?pl...
+ } else {
+ $msg = '<a href="' . get_script_uri() . '?plug...
+ }
+ return $msg;
+}
+
+
+function plugin_login_convert()
+{
+ if(isset($_SESSION['login_user'])){
+ return _get_logout_form();
+ }
+ return _get_login_form();
+}
+
+function plugin_login_action()
+{
+ global $vars, $auth_users;
+
+ if($vars['pcmd']=='login')
+ {
+ if( isset($vars['pass'])
+ && isset($vars['user'])
+ && isset($auth_users[$vars['user']])
+ && pkwk_hash_compute($vars['pass'], $auth_users[ $va...
+ {
+ // login success
+ $_SESSION['login_user'] = $vars['user'];
+ header('Location: ' . get_script_uri()...
+ return;
+ }
+ // login fail
+ unset($_SESSION['login_user']);
+ $body = "!!! LOGIN FAILED !!!" . _get_login_form();
+ }
+ else if($vars['pcmd']=='logout')
+ {
+ $body = '';
+ if( isset($_SESSION['login_user'])) {
+ $body = htmlspecialchars($_SESSION['login_user']) . ...
+ unset($_SESSION['login_user']);
+ }
+ $body .= _get_login_form();
+ }
+ else
+ {
+ if (!isset($_SESSION['login_user']) ) {
+ $body = _get_login_form();
+ } else {
+ $body = _get_logout_form();
+ }
+ }
+ return array('msg' => 'login', 'body' => $body);
+}
+
+function _get_login_form(){
+ global $vars;
+ $script = htmlspecialchars(get_script_uri());
+ $s_referer= htmlspecialchars($vars['referer']);
+
+ return <<<EOD
+<div>
+<form action="$script" method="post">
+ <input type="hidden" name="cmd" value="login" />
+ <input type="hidden" name="pcmd" value="login" />
+ <input type="hidden" name="referer" value="$s_refer...
+ User Name<br /><input type="user" name="user" size=...
+ Password<br /><input type="password" name="pass" siz...
+ <input type="submit" value="login" />
+</form>
+</div>
+EOD;
+}
+
+function _get_logout_form(){
+ global $vars;
+ $script = htmlspecialchars(get_script_uri());
+ $s_referer= htmlspecialchars($vars['referer']);
+ $user = $_SESSION['login_user'];
+
+ return <<<EOD
+<div>
+Current User : $user
+
+<form action="$script" method="post">
+ <input type="hidden" name="cmd" value="login" />
+ <input type="hidden" name="pcmd" value="logout" />
+ <input type="hidden" name="referer" value="$s_refer...
+ <input type="submit" value="logout" />
+</form>
+</div>
+EOD;
+}
+
+
+?>
diff -urN pukiwiki-1.4.7_notb/pukiwiki.ini.php pukiwiki-...
--- pukiwiki-1.4.7_notb/pukiwiki.ini.php 2006-06-11 23:3...
+++ pukiwiki-1.4.7_notb_login/pukiwiki.ini.php 2007-05-1...
@@ -241,6 +241,9 @@
/////////////////////////////////////////////////
// Authentication method
+//$auth_type = 'basic'; // HTTP authentication (not ava...
+$auth_type = 'session';session_start();session_regenera...
+
$auth_method_type = 'pagename'; // By Page name
//$auth_method_type = 'contents'; // By Page contents
- ↑のパッチの文字化けだけ、勝手に書き換えた -- &new{2011...
- ↑諦めておりました;; 大変有り難うございます。 いまか...
-- パッチを当てたんですが、File to patch: とでて指定する...
-- パッチは勉強不足でさっぱりわかりませんでした。 上のソ...
--- 俺の俺による俺のためのウィキ - http://wiki.wetcr...
終了行:
** login.inc.php [#v31d901f]
|RIGHT:100|LEFT:360|c
|~サマリ|PHPセッションを使った認証プラグイン(CGI版PHPでも...
|~リビジョン|0.1|
|~対応バージョン|1.4.7|
|~投稿者|[[pikky]]|
|~投稿日|&new{2007-05-10 (木) 00:46:03};|
**概要 [#t6644bd0]
-pukiwiki1.4.7の標準認証にsession(cookie)を使って認証で...
-CGI版PHPでも認証が機能します(さくらインターネットで使っ...
-認証が必要なページにアクセスすると自動的にログイン画面が...
-login.inc.phpというプラグインとauth.phpを変更して実装し...
***注意 [#r3e5d736]
phpのsessionでは、cookieを使います。また、cookieが使えな...
''本当にみられたくない場合は、別フォルダにpukiwikiをイン...
login.inc.phpは以下のような場合には便利かもしれません。
-編集を許可するユーザをとりあえず指定したい。
-「[[userauth.php>自作プラグイン/userauth.php]]」などを使...
**デモサイト [#v870aef6]
-%% http://pw1.atcms.jp/pikky/ %%
**インストール方法 [#ybeee52e]
***自分でファイルを更新する場合 [#a0128d8c]
-login.inc.phpをpluginディレクトリに入れてください。
--plugin/login.inc.php.txt %% http://pw1.atcms.jp/pi...
-lib/auth.phpを以下のファイルと置き換えてください。
--lib/auth.php.txt %% http://pw1.atcms.jp/pikky/inde...
-%%pukiwiki.inc.php%% pukiwiki.ini.phpに以下の1行を入れ...
$auth_type = 'session'; session_start();session_regenera...
***パッチを使う場合 [#e4f3a9f2]
以下のパッチをpukiwikiのインストールディレクトリからあて...
% patch -p1 < login-20070511.patch
-login-20070511.patch %% http://pw1.atcms.jp/pikky/i...
-login-20070511.patch [[ミラー(このページのコメント内)>...
--セキュリティ関係:rawurlencode, htmlspecialcharsを追加。
--その他:get_script_uri()の使用。変数の整理など。
-login-20070510.patch
--sessionに綴り間違いがあったので修正。session_regenerate...
-login-20070509.patch 初期バージョン
**使い方 [#g28bc377]
-まず、%%pukiwiki.inc.php%% pukiwiki.ini.php機能を有効に...
例えば、
--secretという名前が入っているページ名に編集・参照両方の...
--ユーザ名は authority パスワードは、hirakedoor
には、%%pukiwiki.inc.php%% pukiwiki.ini.phpを以下のように...
$auth_users = array(
'authority' => '{x-php-md5}' . md5('hirakedoor'),
);
$read_auth = 1;
$read_auth_pages = array(
'#secret#' => 'authority',
);
$edit_auth = 1;
$edit_auth_pages = array(
'#secret#' => 'authority',
);
-後は、認証が必要なページにアクセスすると、自動的にログイ...
-一度ログインすると、cookieが有効である限り、認証は不要で...
-自分でログイン・ログアウトしたい場合は、?plugin=login ...
*loginプラグインのおまけ [#d17d57c0]
-&login();
--現在のログインユーザ名が表示され、ログイン画面へのリン...
--MenuBarに入れておくと、ログイン画面か、現在のユーザ名が...
-#login
--現在のログインユーザ名が表示され、ログイン画面またはロ...
**説明 [#h018642b]
-%%pukiwiki.inc.php%% pukiwiki.ini.php
--$auth_typeという変数を追加しました。
---
$auth_type = 'session';session_start();session_regenerat...
を有効にするとsession認証になります。
---消すと、標準のHTTP認証に戻ります。
-- session_start()といった初期化を、最初、lib/auth.phpに...
--index.phpに、define(PKWK_AUTH, 'session');などとすれば...
-lib/auth.php
-- $auth_type == sessionの場合の処理を加えています(functi...
-plugin/login.php
--実際にログイン、ログアウト画面を表示し、認証します。
**ライセンス [#s9c79512]
GPLです。
**経緯 [#ffa8fc02]
さくらインターネットで、ユーザ認証を行わなければならなっ...
諦めきれず、pukiwikiでセッション管理をしているサイトがあ...
-[[teanan.homeip.net>teanan:自作プラグイン/session.inc.ph...
それで、pukiwiki1.4.7のauth.phpをみてみたら、認証している...
やってみたらあっさり動いた。
PHPのセッションには問題があるが、「そんなに頑固なセキュリ...
元のauth.phpを復活させ、auth_typeで切り替えられるようにし...
**コメント [#o6575709]
- 「[[userauth.php>自作プラグイン/userauth.php]]」と併用...
-- 「userauth.php」を使っているのであれば、pukiwiki.ini.p...
$auth_type = 'session'; session_start();session_regenera...
- 出来ました。どうもありがとうございました(^^)
ところで、パッチを適用すると、
$auth_type = 'session'; session_start();session_regenera...
ではなく、
$auth_type = 'session'; session_start();sessio_regenerat...
が、出力されました。sessionのnが抜けてました。 -- [[サイ...
-- ご報告ありがとうございます。動いてホッとしてます^o^。...
- sessionでユーザー管理ですか。いいですね。CGI版PHPユーザ...
-- [[dev:プラグイン/開発者向け]]の補足情報参照。
-- plugin_login_inline()の方は、global宣言がないので空に...
- お疲れ様です。Locationヘッダーの部分に rawurlencode($pa...
- ソース確認いただいてありがとうございます。ご指摘のあっ...
- 「define('PKWK_READONLY', 1);」の時に、「&login();」と...
--「define(PLUGIN_LOGIN_HIDE_LOGIN, 1);」をlogin.inc.php...
- 全ページ読みはOkで編集だけユーザ認証を必要にする場合、$...
--ありがとうございます。'#*#'がいいと思いますが、結果は同...
- Operaの9.20ではログイン出来ないようです。何か設定が間違...
--後でoperaで試してみますが、クッキーがonになっているかど...
-- クッキーはonになっています。Safariも動作が怪しい(編集...
-- すみませんpagesの指定で、一度 ' ' にしてしまって、その...
- さくらに設置した1.4.7_notbに対してFirefox2.0.0.4で問題...
-- それでいいと思います。(そもそもpukiwiki.inc.phpは無い...
- [[欲しいプラグイン/286]]のものです。使わさせて頂きます...
- 単語検索の時、文字を入力して検索しようとするとなぜか認...
-- ログインしていないときに、$auth_flag を無視して必ずロ...
-- こう変えたらどうですか? -- &new{2009-11-02 (月) 11:1...
// require valid user
if ($auth_type == 'session'){
- if (!isset($_SESSION['login_user']) ) { // not login ...
+ if ($auth_flag && !isset($_SESSION['login_user']) ) {...
header("Location: " . get_script_uri() . "?plugin=lo...
}
- if ( !PKWK_READONLY &&
+ if ( !PKWK_READONLY && isset($_SESSION['login_user'])...
in_array($_SESSION['login_user'], $user_list))
{
return TRUE; // Auth success
}
- さくらインターネットを使ってるので入れてみました。 puk...
-- auth.phpがクラックされてませんか? 先頭にSPAMが入って...
-- クラックされているのではなく、作者のGoogleAdSenseが挿...
-- 失礼。アフィリエイトだったんですね。その部分を削除した...
-- 2008/1/13の方と同じ症状でしたが、これは「自分でファイ...
- まだここに書き込んでも大丈夫かな?&br;userauthと併用(...
-- 私もbooさんと同じ現象です。#ref()を2個以上使用すると2...
-- 私も同じ現象です。 ref.inc.php の PLUGIN_REF_DIRECT_AC...
-- pukiwiki.ini.phpのsession_regenerate_idの行をコメント...
--- それは[[自作プラグイン/login.inc.php#説明>自作プ...
--- あ、ここの説明だと1行で全部書かれていますね。私の使...
-- [[自作プラグイン/imgfolder.inc.php]] を ref の代わりに...
--- あと、編集できなくなったページは、ls2_1 などで使って...
- 動作環境:win2003srv,iis [編集の認証]ログイン画面でID...
-- 私も上記の方と同じ症状で,編集を押してログイン画面が出...
-- ログイン後は、閲覧用のURL にリダイレクトするようになっ...
- 久しぶりに書き込みます。&br;本プラグインでかなり楽をさ...
-- Firefoxだと覚えるかどうかの選択肢が出たような。ブラウ...
-- 自己レスです。&br;PHP初心者ですが、他のソースなど参考...
- 編集ページ(アドレスにcmd=edit)があるページへのアクセ...
-- edit_authのみ有効にすればいけるんじゃないでしょうか? ...
-- edit_authのみ有効にしているのですが、なぜか編集制限の...
- 無事に設置できました。ところで、1度ログオンしてから画面...
- 1.4.7_notb@さくら でFirefox3.0.6で問題なく動作しました...
- ありがとうございます。助かりました。 -- [[kuma]] &new{2...
- 利用したいと考えているのですが、どこからダウンロードす...
-- 上の''[[インストール方法>#ybeee52e]]''からダウンロード...
- ありがとうございます。パッチをダウンロードして設定しま...
- ロリポップ!レンタルサーバーで特に修正することなく動き...
- 動作報告です。さくらで去年の一時期からうまく認証できな...
- 利用させていただいています。ロリポのCGIPHP5で動作確認。...
- さくらのレンタルサーバーでやってみたんですが何度認証し...
- secedit.inc.phpと共存しなかったです。それぞれ単独では支...
- >GegegeMokekeさん、実際のところ、どのように改造(?)すれ...
- さくらインターネットに入れましたが、何度editをしようと...
- ロリポップで問題なく動作しました。ありがとうございまし...
- 便利なプラグインありがとうございます。ところで添付ファ...
- あれ、いまの時点でダウンロードできないのですけど・・・...
- ダウンロードできなくなっています>< -- &new{2011-04-0...
- アーカイブもない・・・ http://replay.waybackmachi...
- 上げようにも管理者パスがいるのかしら -- &new{2011-04-0...
- [[質問箱5/49]] -- &new{2011-04-10 (日) 10:39:44};
- こうなってる? -- [[Logue]] &new{2011-04-17 (日) 13:05:...
-- &aname(login_inc_php_txt){};file: login.inc.php.txt
<?php
/////////////////////////////////////////////////
// login.inc.php
//
// 2007/5/11 無駄な変数を除いて、分かりやすく変更. get_s...
// htmlspecialcharsをつけた。
// 2007/5/9 オリジナル//
/////////////////////////////////////////////////
/* initialize
function plugin_login_init()
{
}
*/
function plugin_login_inline()
{
if(isset($_SESSION['login_user'])){
$msg = $_SESSION['login_user'];
$msg .= ' <a href="' . get_script_uri() . '?plu...
} else {
$msg = '<a href="' . get_script_uri() . '?plugi...
}
return $msg;
}
function plugin_login_convert()
{
if(isset($_SESSION['login_user'])){
return _get_logout_form();
}
return _get_login_form();
}
function plugin_login_action()
{
global $vars, $auth_users;
if($vars['pcmd']=='login')
{
if( isset($vars['pass'])
&& isset($vars['user'])
&& isset($auth_users[$vars['user']])
&& pkwk_hash_compute($vars['pass'], $auth_users[ $var...
{
// login success
$_SESSION['login_user'] = $vars['user'];
header('Location: ' . get_script_uri() ...
return;
}
// login fail
unset($_SESSION['login_user']);
$body = "!!! LOGIN FAILED !!!" . _get_login_form();
}
else if($vars['pcmd']=='logout')
{
$body = '';
if( isset($_SESSION['login_user'])) {
$body = htmlspecialchars($_SESSION['login_user']) . "...
unset($_SESSION['login_user']);
}
$body .= _get_login_form();
}
else
{
if (!isset($_SESSION['login_user']) ) {
$body = _get_login_form();
} else {
$body = _get_logout_form();
}
}
return array('msg' => 'login', 'body' => $body);
}
function _get_login_form(){
global $vars;
$script = htmlspecialchars(get_script_uri());
$s_referer= htmlspecialchars($vars['referer']);
return <<<EOD
<div>
<form action="$script" method="post">
<input type="hidden" name="cmd" value="login" />
<input type="hidden" name="pcmd" value="login" />
<input type="hidden" name="referer" value="$s_refere...
User Name<br /><input type="user" name="user" size="...
Password<br /><input type="password" name="pass" size...
<input type="submit" value="login" />
</form>
</div>
EOD;
}
function _get_logout_form(){
global $vars;
$script = htmlspecialchars(get_script_uri());
$s_referer= htmlspecialchars($vars['referer']);
$user = $_SESSION['login_user'];
return <<<EOD
<div>
Current User : $user
<form action="$script" method="post">
<input type="hidden" name="cmd" value="login" />
<input type="hidden" name="pcmd" value="logout" />
<input type="hidden" name="referer" value="$s_referer...
<input type="submit" value="logout" />
</form>
</div>
EOD;
}
?>
-- &aname(login-20070511_patch){};file: login-20070511.pa...
diff -urN pukiwiki-1.4.7_notb/lib/auth.php pukiwiki-1.4....
--- pukiwiki-1.4.7_notb/lib/auth.php 2005-06-13 23:02:07...
+++ pukiwiki-1.4.7_notb_login/lib/auth.php 2007-05-11 16...
@@ -168,7 +168,7 @@
// Basic authentication
function basic_auth($page, $auth_flag, $exit_flag, $aut...
{
- global $auth_method_type, $auth_users, $_msg_auth;
+ global $auth_method_type, $auth_users, $_msg_auth, $au...
// Checked by:
$target_str = '';
@@ -185,43 +185,51 @@
if (empty($user_list)) return TRUE; // No limit
- $matches = array();
- if (! isset($_SERVER['PHP_AUTH_USER']) &&
- ! isset($_SERVER ['PHP_AUTH_PW']) &&
- isset($_SERVER['HTTP_AUTHORIZATION']) &&
- preg_match('/^Basic (.*)$/', $_SERVER['HTTP_AUTHORIZA...
- {
-
- // Basic-auth with $_SERVER['HTTP_AUTHORIZATION']
+ // require valid user
+ if ($auth_type == 'session'){
+ if (!isset($_SESSION['login_user']) ) { // not login ...
+ header("Location: " . get_script_uri() . "?plugin=lo...
+ }
+ if ( !PKWK_READONLY &&
+ in_array($_SESSION['login_user'], $user_list))
+ {
+ return TRUE; // Auth success
+ }
+ } else { // $auth_type == 'basic'
+ $matches = array();
+ if (! isset($_SERVER['PHP_AUTH_USER']) &&
+ ! isset($_SERVER ['PHP_AUTH_PW']) &&
+ isset($_SERVER['HTTP_AUTHORIZATION']) &&
+ preg_match('/^Basic (.*)$/', $_SERVER['HTTP_AUTHORIZ...
+ {
+ // Basic-auth with $_SERVER['HTTP_AUTHORIZATIO...
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW...
explode(':', base64_decode($matches[1]));
+ }
+ if ( ! PKWK_READONLY &&
+ isset($_SERVER['PHP_AUTH_USER']) &&
+ in_array($_SERVER['PHP_AUTH_USER'], $user_list) &&
+ isset($auth_users[$_SERVER['PHP_AUTH_USER']]) &&
+ pkwk_hash_compute(
+ $_SERVER['PHP_AUTH_PW'],
+ $auth_users[$_SERVER['PHP_AUTH_USER']]
+ ) == $auth_users[$_SERVER['PHP_AUTH_USER']])
+ return TRUE; // Auth success
}
- if (PKWK_READONLY ||
- ! isset($_SERVER['PHP_AUTH_USER']) ||
- ! in_array($_SERVER['PHP_AUTH_USER'], $user_list) ||
- ! isset($auth_users[$_SERVER['PHP_AUTH_USER']]) ||
- pkwk_hash_compute(
- $_SERVER['PHP_AUTH_PW'],
- $auth_users[$_SERVER['PHP_AUTH_USER']]
- ) !== $auth_users[$_SERVER['PHP_AUTH_USER']])
- {
- // Auth failed
- pkwk_common_headers();
- if ($auth_flag) {
- header('WWW-Authenticate: Basic realm="' . $_msg_aut...
- header('HTTP/1.0 401 Unauthorized');
- }
- if ($exit_flag) {
- $body = $title = str_replace('$1',
- htmlspecialchars(strip_bracket($page)), $title_cann...
- $page = str_replace('$1', make_search($page), $title...
- catbody($title, $page, $body);
- exit;
- }
- return FALSE;
- } else {
- return TRUE;
+ // Auth failed
+ pkwk_common_headers();
+ if ($auth_flag && $auth_type !== 'session'){
+ header('WWW-Authenticate: Basic realm="' . $_msg_auth...
+ header('HTTP/1.0 401 Unauthorized');
+ }
+ if ($exit_flag) {
+ $body = $title = str_replace('$1',
+ htmlspecialchars(strip_bracket($page)), $title_canno...
+ $page = str_replace('$1', make_search($page), $title_...
+ catbody($title, $page, $body . '....');
+ exit;
}
+ return FALSE;
}
?>
diff -urN pukiwiki-1.4.7_notb/plugin/login.inc.php pukiw...
--- pukiwiki-1.4.7_notb/plugin/login.inc.php 1970-01-01 ...
+++ pukiwiki-1.4.7_notb_login/plugin/login.inc.php 2007-...
@@ -0,0 +1,117 @@
+<?php
+/////////////////////////////////////////////////
+// login.inc.php
+//
+// 2007/5/11 無駄な変数を除いて、分かりやすく変更. get_...
+// htmlspecialcharsをつけた。
+// 2007/5/9 オリジナル//
+/////////////////////////////////////////////////
+
+
+/* initialize
+function plugin_login_init()
+{
+}
+*/
+
+function plugin_login_inline()
+{
+ if(isset($_SESSION['login_user'])){
+ $msg = $_SESSION['login_user'];
+ $msg .= ' <a href="' . get_script_uri() . '?pl...
+ } else {
+ $msg = '<a href="' . get_script_uri() . '?plug...
+ }
+ return $msg;
+}
+
+
+function plugin_login_convert()
+{
+ if(isset($_SESSION['login_user'])){
+ return _get_logout_form();
+ }
+ return _get_login_form();
+}
+
+function plugin_login_action()
+{
+ global $vars, $auth_users;
+
+ if($vars['pcmd']=='login')
+ {
+ if( isset($vars['pass'])
+ && isset($vars['user'])
+ && isset($auth_users[$vars['user']])
+ && pkwk_hash_compute($vars['pass'], $auth_users[ $va...
+ {
+ // login success
+ $_SESSION['login_user'] = $vars['user'];
+ header('Location: ' . get_script_uri()...
+ return;
+ }
+ // login fail
+ unset($_SESSION['login_user']);
+ $body = "!!! LOGIN FAILED !!!" . _get_login_form();
+ }
+ else if($vars['pcmd']=='logout')
+ {
+ $body = '';
+ if( isset($_SESSION['login_user'])) {
+ $body = htmlspecialchars($_SESSION['login_user']) . ...
+ unset($_SESSION['login_user']);
+ }
+ $body .= _get_login_form();
+ }
+ else
+ {
+ if (!isset($_SESSION['login_user']) ) {
+ $body = _get_login_form();
+ } else {
+ $body = _get_logout_form();
+ }
+ }
+ return array('msg' => 'login', 'body' => $body);
+}
+
+function _get_login_form(){
+ global $vars;
+ $script = htmlspecialchars(get_script_uri());
+ $s_referer= htmlspecialchars($vars['referer']);
+
+ return <<<EOD
+<div>
+<form action="$script" method="post">
+ <input type="hidden" name="cmd" value="login" />
+ <input type="hidden" name="pcmd" value="login" />
+ <input type="hidden" name="referer" value="$s_refer...
+ User Name<br /><input type="user" name="user" size=...
+ Password<br /><input type="password" name="pass" siz...
+ <input type="submit" value="login" />
+</form>
+</div>
+EOD;
+}
+
+function _get_logout_form(){
+ global $vars;
+ $script = htmlspecialchars(get_script_uri());
+ $s_referer= htmlspecialchars($vars['referer']);
+ $user = $_SESSION['login_user'];
+
+ return <<<EOD
+<div>
+Current User : $user
+
+<form action="$script" method="post">
+ <input type="hidden" name="cmd" value="login" />
+ <input type="hidden" name="pcmd" value="logout" />
+ <input type="hidden" name="referer" value="$s_refer...
+ <input type="submit" value="logout" />
+</form>
+</div>
+EOD;
+}
+
+
+?>
diff -urN pukiwiki-1.4.7_notb/pukiwiki.ini.php pukiwiki-...
--- pukiwiki-1.4.7_notb/pukiwiki.ini.php 2006-06-11 23:3...
+++ pukiwiki-1.4.7_notb_login/pukiwiki.ini.php 2007-05-1...
@@ -241,6 +241,9 @@
/////////////////////////////////////////////////
// Authentication method
+//$auth_type = 'basic'; // HTTP authentication (not ava...
+$auth_type = 'session';session_start();session_regenera...
+
$auth_method_type = 'pagename'; // By Page name
//$auth_method_type = 'contents'; // By Page contents
- ↑のパッチの文字化けだけ、勝手に書き換えた -- &new{2011...
- ↑諦めておりました;; 大変有り難うございます。 いまか...
-- パッチを当てたんですが、File to patch: とでて指定する...
-- パッチは勉強不足でさっぱりわかりませんでした。 上のソ...
--- 俺の俺による俺のためのウィキ - http://wiki.wetcr...
ページ名: