プロが教える店舗&オフィスのセキュリティ対策術

最近PHPを勉強している初心者です。
会員制サイトの構築を考えています。

基本的な仕組みは
・会員はHTML上のフォーム入力によりログイン
・PHPから、MySQLに保存された会員データベースを呼び出して認証
・セッションを用いて会員用ページにアクセス

のようにしようと思います。
しかし、この仕組みではページへのアクセス制限しかできません。
具体的には会員用ページにのPDF文書を置きたいのですが、
ログインせずともURL直接アクセスでDLできてしまいます。
DL用ファイルへのアクセスも含めて制限するのであればBasic認証などが考えられます。
ですがユーザーに2度もパスワードを入力させるわけにはいきません。
パスワードの管理も2重になり、煩雑です。

このような場合、どうやってアクセス制限するのが良いのでしょう。
要点は
・DL用ファイルを含むすべての会員用コンテンツにアクセス制限をかける
・認証は1回のみ(できればフォームで)

ということです。

類似の質問には目を通したつもりですが、解決できませんでした。
よろしくお願い致します。

A 回答 (1件)

以下のような方法が良いかと思います。


(1)セッションを調べて認証OKだったら、DL対象のファイルをオープンして、その内容をクライアント(ブラウザ)にレスポンスするPHPプログラムを作成する。
(2)DLリンクは、上記のPHPプログラムに張る。
(3)DL対象のファイルは、Webサーバの公開ディレクトリの外に置く(URL直接アクセスを避けるため)

上記(1)については、以下のページが参考になると思います。
http://www.spencernetwork.org/memo/tips-5.php
このページのサンプルPHPプログラムの頭の方に、セッションによるユーザ認証処理を入れてやればよいと思います。また、mb_http_output('pass'); を指定する必要がある場合もあります。
    • good
    • 0
この回答へのお礼

・.htaccessなどで非公開ディレクトリを設定し、その中にDL対象ファイルを置く。
・対象ファイルはPHPからオープンし、ユーザーに渡す。
ということですね。

これならできそうです。URLも大変参考になりました。
ありがとうございました。

お礼日時:2006/11/26 23:00

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