[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 メーリングリストの案内