[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 メーリングリストの案内