2016-10-26 4 views
0

.htacess(すべて拒否)を使用する - システムにログインしているユーザーのみがファイルに直接アクセスできるようにすることはできますか?それが何か変わった場合、私のサイトはDrupal(PHP)で構築されています。これが可能であれば理想的にはユーザーの役割もチェックしたいと思っています。htaccess - ログインユーザー以外のすべてのファイルへの直接アクセスを禁止する(PHP)

答えて

0

.htaccessだけではこれを行うことはできません。何をする必要がある:

  1. は、認証後のファイルパススルーを可能にする「ファイルプロバイダ」スクリプトを持つすべての
  2. からのファイルアクセスを拒否します。

例:

proxy.php

<?php 
$proxiedDirectory = "./files/"; //Whatever the directory you blocked access to is. 
$filename = isset($_GET["fn"])?$_GET["fn"]:null; 

if ($filename === null || !file_exists($proxiedDirectory.$filename)) { 
    http_response_code(404); 
    exit; 
} 

if (!user_is_authenticated()) { //Not a real method, use your own check 
    http_response_code(403); 
    exit; 
} 


$fp = fopen($proxiedDirectory.$filename, 'rb'); 

header("Content-Type: image/???"); //May need to determine mime type somehow 
header("Content-Length: " . filesize($proxiedDirectory.$filename)); 

fpassthru($fp); 
exit; 

そして、あなたは経由して、これを使用すると思います:

http://example.com/proxy.php?fn=filename.txt

+0

がよさそうだ、ありがとう:) – Chris

関連する問題