• ベストアンサー

phpでログインの有無によってファイルアクセスの是非を変更したい

phpでファイルをサーバーにアップロードし、ログインしないとそのファイルにアクセスできないというシステムを作りたいと考えています。 現在ログインしてアップロードするところまでは作りました。 そのファイルをたとえばmixiのように公開・非公開の設定を設けて、ログインしないと閲覧できないようにするにはどうしたらいいのでしょうか。 属性の意味があまり分かっていないのですが、いろいろ変更してみても閲覧できるか、できないかの2通りになってしまって、ログインされているかどうかでアクセスのしかたをかえる方法が分かりません。 漠然とした質問で申し訳ありません。何かヒントだけでもいただけると助かります。 サーバー:apache 言語:php

質問者が選んだベストアンサー

  • ベストアンサー
  • warez
  • ベストアンサー率57% (29/50)
回答No.2

> たとえば、アップロードしたファイルの場所が/dir/image.jpgだとすると、ドメイン名+このurlをブラウザのアドレスバーに打ち込むことで閲覧できてしまうのです。これを防ぐにはどうしたらいいのでしょうか? ・ドキュメントルートの外に置く ・/dir をアクセス制限する どちらにしても、ログイン状態のチェックと、目的のファイルを読み込んで表示する装置が必要です。

metheglin
質問者

お礼

回答ありがとうございます。 できました! /dirのアクセス制限の仕方が分かっていませんでした。 ディレクトリの属性値についてよく分かっていなかったことが問題でした。 warezさん、Crystalizeさん気にかけてくださってどうもありがとうございました。

その他の回答 (1)

回答No.1

こんにちは。具体的なPHPのプログラムというよりは方法のざっくりとした話になりますが、 例えば、データベースを使うことができるのであれば、登録したユーザーのユーザー情報用のテーブル(IDとパスワード等を入れたもの)を作っておいて、アップロードしたファイル情報用のテーブル(ファイル名とそれをアップロードしたユーザー情報)も作り、ファイルにアクセスする際に、テーブルを参照して該当するユーザーであればファイルを開く事ができ、該当しないユーザーであればエラーを出す、 というような感じで作れば実現できると思います。 ちなみに、サーバー上のファイルそのものの属性や所有者は、ネットという不特定多数の環境からアップロードすれば、Apacheで指定したユーザーになるので、phpでファイルをアップロードしたユーザーとは概念が異なると思います。 以上ですが、参考になれば幸いです。

metheglin
質問者

お礼

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

関連するQ&A