php を使って会員サイトを作ろうと思うんですが、*.php ファイルは、保護できるんですが、そのページの中にある、画像ファイルは、直接URLを叩いたら見えてしまうんですが、これ、簡単に保護する仕組みってありますでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/08/20 10:07:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:yoshifumi1975 No.3

回答回数58ベストアンサー獲得回数10

ポイント22pt

http://www.shtml.jp/htaccess/referer.html

このURLにありますように、referer の値で制限をかけれます。

以下のようにすると、RefererのURLに「http://www\.yourdomain\.com」が含まれているかどうかでチェックしています。

Refererっていうのは、どのページから来たとか、どのページで表示されているとかが取れる値です。

SetEnvIf Referer "^http://www\.yourdomain\.com" ref_ok

order deny,allow

deny from all

allow from env=ref_ok

id:rikimaru

ほうほう、これは、大変面白いです

そんなに協力に画像を保護する必要もないので

これ解決方法が良いかもしれません

2006/08/20 10:06:09

その他の回答3件)

id:noni_juice No.1

回答回数48ベストアンサー獲得回数3

ポイント23pt

画像のディレクトリを.htaccessで保護してはどうでしょう。

会員への表示は、phpをに画像を一旦読み込ませて再出力すれば

問題なく可能だと思います。

http://www.yahoo.co.jp/

URLダミーで失礼します。

id:rikimaru

確かに

ただ、ひとつ問題は、ニュースサイトなので

全部の画像のリンクを、PHP経由にするのは、少しつらいのです

でも、対策としてはありですね

2006/08/20 10:04:05
id:backupper No.2

回答回数95ベストアンサー獲得回数10

ポイント23pt

PHPで認証を行っているなら、保護したい画像をPHP経由で出力してやれば良いと思います。

簡単にですが、サンプルを。

<?php
if (auth()) {//認証処理
  $file = "/path/to/images/img_" . $_GET['img'] . ".jpg";
} else {
  $file = "/path/to/images/error.jpg";
}
header("Content-type: image/jpg");
readfile($file);
?>

loader.phpとして保存して、以下の様にアクセスします。

<img src="path/loader.php?img=12345">

$_GET['img']の妥当性検査や、画像の拡張子による処理変更、Content-legthの出力、Winサーバならreadfileがバイナリセーフかなど、細かい所は手を入れてください。

もちろん、認証を経由して後悔したい画像を置くディレクトリ(サンプルでは/path/to/images/)はHTTPでアクセスできない所に置く必要があります。

URLはダミーです。すいません。

http://jp2.php.net/manual/ja/function.header.php

id:rikimaru

これも、同等ですね

ただ、サンプルがあるのでわかりやすいです

2006/08/20 10:04:44
id:yoshifumi1975 No.3

回答回数58ベストアンサー獲得回数10ここでベストアンサー

ポイント22pt

http://www.shtml.jp/htaccess/referer.html

このURLにありますように、referer の値で制限をかけれます。

以下のようにすると、RefererのURLに「http://www\.yourdomain\.com」が含まれているかどうかでチェックしています。

Refererっていうのは、どのページから来たとか、どのページで表示されているとかが取れる値です。

SetEnvIf Referer "^http://www\.yourdomain\.com" ref_ok

order deny,allow

deny from all

allow from env=ref_ok

id:rikimaru

ほうほう、これは、大変面白いです

そんなに協力に画像を保護する必要もないので

これ解決方法が良いかもしれません

2006/08/20 10:06:09
id:fonya3 No.4

回答回数238ベストアンサー獲得回数10

ポイント22pt

a) 画像をWebで不可視のディレクトリに保存しておいてそのつど動的に出力する

b) 表示したページの画像を右クリックで保存できないようにJavaScriptで制御する

という方針になるかと思います。

http://www.2ones.com/bidders+/index.php

id:rikimaru

3の方の回答に、JavaScript の制御を加えると良い形になりそうです

2006/08/20 10:07:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません