以下の環境だったとします。
サーバ:linux
webルート:home/www/
画像ファイル:home/wav/
ここで、home/www/index.phpから、画像ファイルを表示したいとします。※index.phpには、ログイン処理があり、ログイン処理後に画像ファイルへのアクセスがあるとします。
このとき、PHP使って、以下のような処理になるのかと思います。
・画像ファイルを読み込み。
・画像ファイルの出力。出力後、webルートにはファイルを残さない。
を実現するには、どうすればいいのでしょうか?
proxyのような働きをするPHPファイルを作成すると実現できます。
基本的には、
<?php header("Content-Type: image/gif"); readfile("/home/wav/$filename"); ?>
のようなものに、
エラー処理やログイン(セッション)状態の監視機能などを付加したものになるかと思います。
なお、
- mb_http_output("pass") で、PHP がバイナリデータを誤認識し、コード変換することの無いように。
- Content-Type の値
- inline の指定
- Content-Length を付けた方が、ブラウザの認識率が高い
mb_http_output("pass"); header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=image.jpg"); header("Content-length: " . filesize("/tmp/image.jpg")); readfile("/tmp/image.jpg");
とするのが、より良いようです。
http://www.stackasterisk.jp/tech/php/searchAction.do?cid=18
こちらは参考までに
http://lolipoking.lolipop.jp/php/patio.cgi?mode=past&no=1277...
削除の仕方だけでなく、一連を説明してください。
ウェブルートにファイルを残さないだけで、元のファイルは消しません。
proxyのような働きをするPHPファイルを作成すると実現できます。
基本的には、
<?php header("Content-Type: image/gif"); readfile("/home/wav/$filename"); ?>
のようなものに、
エラー処理やログイン(セッション)状態の監視機能などを付加したものになるかと思います。
なお、
- mb_http_output("pass") で、PHP がバイナリデータを誤認識し、コード変換することの無いように。
- Content-Type の値
- inline の指定
- Content-Length を付けた方が、ブラウザの認識率が高い
mb_http_output("pass"); header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=image.jpg"); header("Content-length: " . filesize("/tmp/image.jpg")); readfile("/tmp/image.jpg");
とするのが、より良いようです。
http://www.stackasterisk.jp/tech/php/searchAction.do?cid=18
こちらは参考までに
http://lolipoking.lolipop.jp/php/patio.cgi?mode=past&no=1277...
とても具体的な解説ありがとうございます。理解できました。
とても具体的な解説ありがとうございます。理解できました。