2012-01-24 9 views
0

イム/私のウェブサイトの一部へのアクセスを制限(フォルダModule1をモジュール2、など)できるようにするPHPベースのログイン認証メカニズムを使用して、しかし、私は、ファイルへのアクセスを制限するに問題があります。 私はのドキュメントフォルダ(下記参照)を使用して、ダウンロード可能なファイルをホストしました。これらのファイルへのリンクは、index.php(ルートディレクトリにホストされています)に表示されます。しかし、なんらかの理由で許可されていないユーザーがのファイルにファイルのURLを取得した場合、そのファイルをダウンロードすることができます。ウェブホスティングされたファイルの許可

/ 
/documents/ 
/module1/ 
/module2/ 

PS:これは私が書類IPアドレスによってへのアクセスを制限し、イントラネットのウェブサイトであり、誰かが許可されたIPアドレスでPCを使用して、彼は文書のURLを持っていることをまだ小さい可能性があるので、 。

答えて

0

実際のソースの場所を指定せずに、ユーザーにファイルを提供するプロキシPHPスクリプトを使用します。

ユーザーは、実際のパスはまだ/documents/userid/2342/mydoc.docxであるか、これまでに何あなたの構造がどのように見えるhttp://yourdomain.com/download.php?file=mydoc.docx

を見るでしょう。

<?php 
// Validate the user here 

// Set document root 
$root = 'documents/userid/'.$userID.'/'; 

// Requested file 
$file = $_GET['file']; 

// Validate 
if (file_exists($root . $file)) 
{ 
    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private", false); 
    header("Content-Type: application/force-download"); 
    header("Content-Disposition: attachment; filename=\"".basename($file)."\";"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: ".filesize($root . $file)); 

    ob_clean(); 
    flush(); 
    readfile($root . $file); 
} 
else { echo "File not found"; } 
?> 

See more here

その後、あなたのdownload.phpファイルがでファイルを提供しましょう

関連する問題