目的
編集用のバックドアを作成し、ユーザから見れるコンテンツでは、編集が出来ないようにする。
又、バックドアと通常の表示のスキン(表示用のテンプレート)を両方から問題なく参照出来るようにする。

ここでの記載は、pukiwikiを/adminwiki(本サイトでは http://www.mixed-in.com/adminwiki )にインストールを実施し、動作検証(読書が正常に行えることを確認)を行った 所から記載しています。

作業手順は、
認証フォルダーの外に置くフォルダーの作成
共通で使用する設定ファイルの修正
バックドア用のphpの作成
フロント用のphpの作成
バックドアの認証を実行

上記の手順にて、編集用のバックドアを作成していきます。

認証フォルダーの外に置くフォルダの移動。
pukiwikiをインストールしたフォルダーに有る、imageとskinフォルダーを認証フォルダーの外に移動します。
私の環境では、mixed-in.com/adminwikiに最初pukiwikiをインストールしたのと、/adminwikiのフォルダーで.htaccessの認証を実施する予定なので、/adminwiki/imagesと/adminwiki/skinを一つ上の階層に移動します。
(移動しないと、画像を表示したり、cssをブラウザー(IE等)が取り込むときに、ID,パスワードを求めてくるので、ユーザが見ることが出来ないので、認証するフォルダーの外に置きます)

/adminwiki/image/ => /image/ へ移動
/adminwiki/skin/ => /skin/ へ移動

移動した状態で、アクセス(/adminwiki/index.php)すると、
Runtime error
Error message : SKIN_FILE is not found
と出ます。(接続確認をしなくて構いませんよ。)

バックドア用のphpとフロント用のPHPの作成
/adminwiki/index.phpを/index.phpへコピーします、/index.phpがフロント用のメインになります。

個別設定に対応出来るように、pukiwiki.ini.phpを修正する。

/adminwiki/pukiwiki.ini.php の中に、

define('SKIN_DIR', 'skin/');
define('IMAGE_DIR', 'image/');

の2行があります。
(近くにありますが、この表示みたいに連続してあるわけでは有りません)

この2行をコメントアウト(頭に//を付ける)します。

//define('SKIN_DIR', 'skin/');
//define('IMAGE_DIR', 'image/');


SKIN_DIRは、スキンの位置を、DATA_HOME場所から、相対パスで指定する物になります。
IMAGE_DIRは、プログラムの実行場所から、image(画像ファイル等の保存場所)への相対パスになります。

バックドア用のindex.phpの修正。
/adminwiki/index.phpを修正します。

ファイルを開くとファイルの最後の方が下記の用になっています。

define('DATA_HOME',	'');
define('LIB_DIR',	'lib/');

require(LIB_DIR . 'pukiwiki.php');
?>


上記を下記の用に修正します。

define('DATA_HOME',	'');
define('LIB_DIR',	'lib/');

// スキンのDIRをセットする
// DATA_HOMEからの相対パスでセットする。
define('SKIN_DIR', '../skin/');

// イメージのデレクトリをセットする。
// 自分自身(index.php)からの相対パスでセットする。
define('IMAGE_DIR', '../image/');

require(LIB_DIR . 'pukiwiki.php');
?>


コメント行(//で始まる行)は入力しなくても構いません。
又、require(LIB_DIR . 'pukiwiki.php');の前であれば、何処に入れてもらっても構いません。
修正後、/adminwiki/にアクセスして、表示が出ることを確認して下さい。
但し、この時点では、スキンファイル(/skin内)の修正を行っていないので、スタイルシートが正しく適用されて下りませんので、スタイルは少々崩れています。

Runtime error
Error message : SKIN_FILE is not found

が表示されなくて、画面上部にpukiwikiのロゴが表示されていれば、まずOKだと思います。

フロント用のphpの作成
/index.phpを修正します。
ファイルを開くとファイルの最後の方が下記の用になっています。

define('DATA_HOME',	'');
define('LIB_DIR',	'lib/');

require(LIB_DIR . 'pukiwiki.php');
?>



上記を下記の用に修正します。

define('DATA_HOME',	'adminwiki/');
define('LIB_DIR',	DATA_HOME.'lib/');

// スキンのDIRをセットする
// DATA_HOMEからの相対パスでセットする。
define('SKIN_DIR', '../skin/');

// イメージのデレクトリをセットする。
// 自分自身(index.php)からの相対パスでセットする。
define('IMAGE_DIR', 'image/');

require(LIB_DIR . 'pukiwiki.php');
?>

DATA_HOMEは、pukiwikiのデータの有るホームディレクトリへの自分自身(index.php)からの相対パスでセットします。私の環境では、/adminwiki/の下にデータファイルがあるので、adminwiki/とセットしています。

ちなみに、DATA_HOMEを元にアクセス先を変更している所は。
wiki,diff,backup,cache,attach,counter,trackback,pluginのフォルダーが、pukiwiki.ini.phpの中で定数を定義しています。
skinのフォルダーに関しては、default.ini.phpの中で、条件を元に、スキンファイルを定義しています。

修正後、/index.phpにアクセスして、表示が出ることを確認して下さい。
(/index.phpではcssを含めて正しく表示されるはずです。)

スキンの修正

スキンファイルを修正して、adminwikiでもスタイルシート(CSS)が正しく表示出来るようにする。

/skin/pukiwiki.skin.phpの中で "skin/"で検索をかける。 3箇所ヒットすると思います。

<?php echo DATA_HOME.SKIN_DIR ?>pukiwiki.css.php?
<link rel="stylesheet" type="text/css" media="screen" href="skin/pukiwiki.css.php?charset=<?php echo $css_charset ?>" charset="<?php echo $css_charset ?>" />
<link rel="stylesheet" type="text/css" media="print"  href="skin/pukiwiki.css.php?charset=<?php echo $css_charset ?>&amp;media=print" charset="<?php echo $css_charset ?>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>


<?php if (PKWK_ALLOW_JAVASCRIPT && $trackback_javascript) { ?> <script type="text/javascript" src="skin/trackback.js"></script><?php } ?>

を下記のように修正する。

<link rel="stylesheet" type="text/css" media="screen" href="<?php echo DATA_HOME.SKIN_DIR ?>pukiwiki.css.php?charset=<?php echo $css_charset ?>" charset="<?php echo $css_charset ?>" />
<link rel="stylesheet" type="text/css" media="print"  href="<?php echo DATA_HOME.SKIN_DIR ?>pukiwiki.css.php?charset=<?php echo $css_charset ?>&amp;media=print" charset="<?php echo $css_charset ?>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>


<?php if (PKWK_ALLOW_JAVASCRIPT && $trackback_javascript) { ?> <script type="text/javascript" src="<?php echo DATA_HOME.SKIN_DIR ?>trackback.js"></script><?php } ?>

上記の修正を行うと、/adminwikiのバックドアから参照した場合でも、スタイルシート(css)が正しく読めます。
skinのデレクトリにtrackback.jsが無いけどこれが無いとどうなるかは、今の所不明です。


Last-modified: 2008-08-28 (木) 18:28:39 (740d)