[PHP-users 26592] Re: PHPで独自のディレクトリ認証を

nomoto shin-1 @ ca2.so-net.ne.jp
2005年 8月 25日 (木) 15:37:11 JST


  nomotoです。

>      ぢょ〜@よくきたなです.

いつも投稿拝見させていただいてます。

>      URL を変更していいなら
>
>http://example.com/?page=foo.html

既存のhtml上のリンクを全て書き換えなければならないので、html枚数
が多いというところで現実的ではないですね。

>    とかにしてしまうとか.さらに mod_rewrite を併用できるなら外面の
>    URL は変更せずに同様のことができます.

外面というのはブラウザで見えるアドレスはhttp://example.com/foo.html
のままで実際はhttp://example.com/check.php?page=foo.htmlという処理を
動かせるという事ですか?
それならimgタグの相対パスなども変更しなくてもOKそうですね。

mod_rewriteは記法がややこしくて避けて通っていたのですが、調べてみます。

>nomotoさんの「[PHP-users 26587] PHPで独自のディレクトリ認証を」から
>>もうひとつは、一歩譲歩して、保護する対象をhtmlファイルだけとしたなら、
>>そのディレクトリの拡張子.htmlに対してphpとして動作するようにAddHandler
>>を行い、全ての.htmlファイルの先頭に<?php check_auth(); ?>とタグをつけて
>>ファイル単位で認証チェックを行うしかないかなと思っています。
>
>    php.ini の auto_prepend_file で認証処理を書いたスクリプトを指定し
>    ておけば HTML は何も修正しなくてもいいかもしれません.

なるほど!ためしてみました。

.htaccessを置いてみました。
AddType application/x-httpd-php .html
php_value auto_prepend_file /home/〜/public_html/phpinfo.php

htmlファイルは何も変更しなくても、外部のphpスクリプトが先に
動作して、その直後にもともとのファイルの内容が表示されました。

このスクリプト部分でセッションを調べて、不都合な閲覧者は
header('Location: でエラーページへ飛ばすなりして、exitして
しまえばいいですね。

>      バイナリファイルも同様に AddHandler してしまうという方法はあると
>    思います.不特定のときは面倒といえば面倒ですが.もしくは同様に

.htaccessはこんな感じ?
AddType application/x-httpd-php .html
AddType application/x-httpd-php .gif
AddType application/x-httpd-php .jpg
AddType application/x-httpd-php .swf
AddType application/x-httpd-php .wmv
php_value auto_prepend_file /home/〜/public_html/phpinfo.php

でかいバイナリファイルも一旦PHPスクリプトとして読み込んでしまうため
ちょっと心配・・それにファイル内容によってはもしかしたらPHPのパーサー
が落ちてしまうって事もあるでしょうか?ちょっと強引すぎるかな?

>    mod_rewrite でとにかく PHP を経由しないとアクセス出来ないようにす
>    るとか.

でも、これでも「PHPを経由しないとアクセス出来ない」という状況には
なってると思いますけど。勘違いしてますでしょうか。

mod_rewriteを使った場合は、ファイルパスをパラメータとして渡すので
チェックするスクリプト側で認証OKだったら、拡張子ごとに妥当な
Content-Typeをつけて、パラメータとして渡されたファイルをデータと
して読み込んで、そのまま吐き出すって事ですよね。

mod_rewrite調べてみます。

引き続き、他にもアイデアあればよろしくお願いします。


PHP-users メーリングリストの案内