[PHP-users 34468] フォーム認証によるバイナリファイルへのアクセス制限の方法
Hisamitsu Issei
ds1i-hsmt @ asahi-net.or.jp
2009年 3月 26日 (木) 18:12:22 JST
久光と申します
http://www.example.com/test/pdf/abcd.pdf
のpdfファイルがあるとして、フォーム認証をした状態のユー
ザーだけがこれを閲覧できるようにする方法を探しています
(URLを直接入力しても閲覧できないようにする)。
.htaccessに
RewriteEngine on
RewriteBase /
RewriteRule test/pdf/(.*)$ auth_check.php?fn=%{REQUEST_FILENAME} [L]
と書くことで、指定ディレクトリへのアクセスをいったんauth_check.php
へ誘導することにしました。
あとはauth_check.phpの中で認証状態を確認して、認証され
ていなければログイン用のページへリダイレクト、認証されていれ
ば元々のアクセス先へリダイレクト、と思ったのですが元々のアク
セス先へリダイレクトしたら無限ループに入ってしまいます(当た
り前ですよね)。
<?php
session_start();
if (auth() === false) {
// 認証されてなければログインページへ
header('Location: 'http://www.example.com/login.php');
} else {
// 認証されていたら元のアドレスへ戻す
header('Location: 'http://www.example.com/test/pdf/abcd.pdf');
}
?>
単純に元のアドレスへリダイレクトせずにphpであと一工夫
加えれば解決できるのか、根本的に違う方法(phpとは関係ない方
法)が必要なのかがわかりません。よろしくお願いいたします。
PHP-users メーリングリストの案内