電子書籍の厳選無料作品が豊富!

phpでファイルをサーバーにアップロードし、ログインしないとそのファイルにアクセスできないというシステムを作りたいと考えています。

現在ログインしてアップロードするところまでは作りました。
そのファイルをたとえばmixiのように公開・非公開の設定を設けて、ログインしないと閲覧できないようにするにはどうしたらいいのでしょうか。
属性の意味があまり分かっていないのですが、いろいろ変更してみても閲覧できるか、できないかの2通りになってしまって、ログインされているかどうかでアクセスのしかたをかえる方法が分かりません。

漠然とした質問で申し訳ありません。何かヒントだけでもいただけると助かります。

サーバー:apache
言語:php

A 回答 (2件)

> たとえば、アップロードしたファイルの場所が/dir/image.jpgだとすると、ドメイン名+このurlをブラウザのアドレスバーに打ち込むことで閲覧できてしまうのです。

これを防ぐにはどうしたらいいのでしょうか?

・ドキュメントルートの外に置く
・/dir をアクセス制限する

どちらにしても、ログイン状態のチェックと、目的のファイルを読み込んで表示する装置が必要です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
できました!

/dirのアクセス制限の仕方が分かっていませんでした。
ディレクトリの属性値についてよく分かっていなかったことが問題でした。

warezさん、Crystalizeさん気にかけてくださってどうもありがとうございました。

お礼日時:2009/06/10 19:43

こんにちは。

具体的なPHPのプログラムというよりは方法のざっくりとした話になりますが、

例えば、データベースを使うことができるのであれば、登録したユーザーのユーザー情報用のテーブル(IDとパスワード等を入れたもの)を作っておいて、アップロードしたファイル情報用のテーブル(ファイル名とそれをアップロードしたユーザー情報)も作り、ファイルにアクセスする際に、テーブルを参照して該当するユーザーであればファイルを開く事ができ、該当しないユーザーであればエラーを出す、
というような感じで作れば実現できると思います。

ちなみに、サーバー上のファイルそのものの属性や所有者は、ネットという不特定多数の環境からアップロードすれば、Apacheで指定したユーザーになるので、phpでファイルをアップロードしたユーザーとは概念が異なると思います。

以上ですが、参考になれば幸いです。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。参考になりました。

ですが、一つ懸念されることがあるのです。
たとえば、アップロードしたファイルの場所が/dir/image.jpgだとすると、ドメイン名+このurlをブラウザのアドレスバーに打ち込むことで閲覧できてしまうのです。これを防ぐにはどうしたらいいのでしょうか?
mixiは画像を非公開などにすると、アドレスバーからアクセスしても閲覧できないようになっているんです。

もし分かりましたら回答よろしくお願いします。

お礼日時:2009/06/10 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!