iOSアプリ・Webシステム開発のイリテク

HOME > PHP > [php]会員制サイトで特定のディレクトリ内をアクセス制限する
2012.02.20

[php]会員制サイトで特定のディレクトリ内をアクセス制限する

このエントリーをはてなブックマークに追加

特定のフォルダに入っているファイルを直接アクセスで開けないようにしておきたい。かつ、特定のユーザーしかアクセス出来ないようにしたい。

こんなものを作ろうと考えた時、ディレクトリ制限といえば、あのダイアログが出てくる、ベーシック認証が思い浮かびます。しかし、既に会員システムを構築している場合、php側での認証とベーシック認証の両方を組み込むと、2重にパスワード入力する必要が出て、使う側は面倒です。

SPONSOR

そこで、phpで既に作っている認証プログラムを利用しつつ、ベーシック認証も使わないディレクトリ制限の導入方法についてご紹介です。

制限をかけたいディレクトリにhtaccessを設置

.htaccessファイルを作って、制限したいディレクトリ内に設置。
.htaccessファイルの内容は下記。

Action image/jpeg /ディレクトリパス/access.php

このディレクトリ内のjpgファイルにアクセスがあると、access.phpを実行します。という意味です。htmlだったら、text/html、PDFだったらapplication/pdfというように書き換えて下さい。

アクセス制限の判別を行う

access.phpには、認証処理を用いて会員かどうか判別。

if(それぞれの認証処理判断を…){
	$filenames="img/".basename($_SERVER['SCRIPT_NAME']);
	header('Content-type: image/jpeg');
	readfile($filenames);
	}else{
	echo "NG";
	}

SCRIPT_NAMEはサーバー変数で、ファイルパスを教えてくれます。そのままだと、パスまで表示されますが、basenameを使うとファイル名のみ抽出してくれます。後は、ファイルを読み込んで出力するのみ。

認証されてなければ、この場合「NG」と表示されます。

このエントリーをはてなブックマークに追加

記事を書いている人

イリテク(株)代表。Webシステム/iOSアプリの開発を行っています。
受託開発だけでなく、月額固定の専属エンジニアサービスおよび、 自社でクラウド見積請求書サービス CLOUD PAPERを運用中!
プロフィール

月額10万円で御社専属エンジニアを雇いませんか?

御社の顧問エンジニアとして、デザイン・システムに関わる様々なご相談をお受けします。企画・提案だけでなく、実際に手を動かして開発まで行います。また、システムにとどまらず、デザイン案件もお受けできるのが強みです。
顧問エンジニアサービス

イリテクの最新記事をフォロー

  • follow us in feedly
    RSSで最新記事を取得

SPONSER

コメントをどうぞ!

  • http://twitter.com/2ckD Eの上

    ありがとうございました

    とても参考になりました

    試していて間違いに気付いたので報告します
    access.phpの中身は
    ×$filenames=”img/”.basename($_SERVER['SCRIPT_NAME']);
    ○$filenames=”img/”.basename($_SERVER['REQUEST_URI']);

関連記事

SPONSOR

NEW ENTRIES
FACEBOOK
Twitter
開発したWebサービス
CATEGORY
RECRUIT
Webサービスを一緒に開発して頂けるPHPエンジニア募集!週1回のリモート勤務!