ソフトウェア関連/siteDev2/CGI版PHPで動作(もっと簡単な方法)

上へ

以前、ソフトウェア関連/siteDev2/CGI版PHPで動作というのを書いたのですが…
もっとずっと簡単な方法があったので、それを紹介。



PHPの設定 bookmark

PHP設定情報の
/home/アカウント/www/php.ini
に、以下の一文を追加
cgi.fix_pathinfo=1
これで、"/"を含んだパス情報が扱えます。

パス取得文の書き換え bookmark

PHPファイルの中に、
$_SERVER['PATH_INFO']
という文があるので、それを
$_SERVER['ORIG_PATH_INFO']
に書き換えます。
lib/init.phpとか。
  • 注:この変更はPHP4の時だけ必要みたいです…。

ログイン用入力ボックスの設置 bookmark

skin/design.skin.htmlの管理メニューの部分を以下のように書き換え
<div id="extra">
<p>管理メニュー:&nbsp;{$toppage}&nbsp; {$new}&nbsp; {$edit}&nbsp; {$menuedit}&nbsp; {$attach}&nbsp;  {$backup}&nbsp; {$diff}&nbsp; {$freeze}&nbsp; {$list}&nbsp; {$close}&nbsp;</p>
<form action="index.php"method="post"><input type="password" name="pass">
<input type="submit" value="login"></form>
</div><!--/#extra-->
これで、ログイン用入力ボックスが追加されます。

ログイン管理をセッション方式へ変更 bookmark

sd_class/limit.phpの認証方式を以下のように書き換えます。
なお"session"フォルダは事前に用意しておいてください。

pukiwiki.ini.php bookmark

これを追記するのを忘れてた…。

$adminpass = '81dc9bdb52d04dc20036dbd8313ed055'; // md5('1234')
つまり、ログインの比較を行うのは、常に生ハッシュを使うということです。

雑記 bookmark

たぶん、このやり方だと他のPHPでできたツールなんかも動くはずです。

余談ですが、 rss.inc.phpで以下の部分を変更しておくと、便利かも
//header('Content-type: application/xml');
header('Content-type: text/xml');
そして、MENUの編集でRSSのアイコンを設置
#html{{
<a href="/index.php?cmd=rss&ver=1.0"><img src="/image/rss.png" border="0" alt="RSS:西風の道標"></a>
}}
#html{{
<a href="/index.php?cmd=rss&ver=2.0"><img src="/image/rss20.png" border="0" alt="RSS:西風の道標"></a>
最後の仕上げに、design.skin.htmlの<head>...</head>の中に、
<link rel="alternate" type="application/rss+xml" title="タイトル名" href="http://???/sitedev2/?cmd=rss&ver=1.0" />
を入れてやるとブラウザが自動検出できる。

セキュリティ向上 bookmark

管理メニューを以下のように書き換えて、
"MD5.js"と"login.js"を配置する事で、平文パスワードを流さなくなります。

skin/design.skin.html(内部のjsファイルは、フルパスで書いた方が良いみたい。)

<div id="extra">
<script language="javascript" src="http://arthur.jpn.org/md5.js"></script>
<script language="javascript" src="http://arthur.jpn.org/login.js"></script>
<p>管理メニュー:&nbsp;{$toppage}&nbsp; {$new}&nbsp; {$edit}&nbsp; {$menuedit}&nbsp; {$attach}&nbsp;  {$backup}&nbsp; {$diff}&nbsp; {$freeze}&nbsp; {$list}&nbsp; {$close}&nbsp;
<form action="#" onsubmit="javascript:login_submit('form_login');return;" name="form_login">
<input type="password" name="pass">
<input type="submit" value="認証" >
</form>
</p>
</div><!--/#extra-->
login.js

function login_submit(form_name){
	var tmp = window.document.forms[form_name].pass.value;
	window.document.forms[form_name].method="post";
	if(tmp != ""){
		//クライアント側でハッシュを生成して、それをSubmitする。
		window.document.forms[form_name].pass.value=MD5_hexhash(tmp);
		window.document.forms[form_name].submit();
	}else{
		window.alert("パスワードを入力してください。");
	}
	return;
}

"MD5.js"は、検索すればすぐに見つかります。

動きがおかしい場合 bookmark

おまけ bookmark

"ls2.inc.php"
以下の変更で、#ls2を使った場合でも"/"区切りで正しくリンクをするようになる。
plugin_ls2_get_headings
//$href   = $script . '?cmd=read&amp;page=' . $r_page;
$r_page = eregi_replace ( '%2F' , '/' , $r_page );
$href   = $script . '/' . $r_page;
VirtualHostを使ってると挙動がおかしい場合があります。(md5.jsやlogin.jsをうまく読んでくれないとか。)
以下4ファイルの「SERVER_NAME」のところを「HTTP_HOST」に直すと改善するかも?
1 /lib/func.php
2 /lib/init.php
3 /plugin/flush_inc.php
4 /plugin/server_inc.php