2016-09-17 5 views
-2

私のウェブサイトにはダウンロードコンテンツが含まれています。私はログインしたユーザーのためだけにこのファイルをダウンロードしたいと思っています。直接ダウンロードファイルをブロックする方法

ユーザーがブラウザに直接ファイルURLを入力した場合、ユーザーがログインしていない場合は禁止ページが表示されます。CMSを使用していません。 直接ファイルリンク:localhost/files/questions/20160917070900-w2CdE9LZpE.zip

私はネットで検索しましたが、良い答えは見つかりませんでした。どうすればいいのか教えてください。

+0

はhttp://stackoverflow.com/questions/13881041/htaccess-deny-acces-to-directoryを見てください-if-logged- out-checked-with-phpを使って、これをPHPでどのように行うことができるかを確認してください。 – Chris

+0

そのブロックではない直接ファイルのリンク.. PHPのファイルにログインしていない場合は、ちょうどリダイレクト –

答えて

0

新しいフォルダのファイルを作成し、ここにすべての曲を移動し、新しい.htaccessファイルを作成し、次の行を追加:フォルダのメンバー中に、

Order Deny,Allow 
Deny from all 

をファイルget_file.phpを作成し、次のコードを追加します。 ?ファイルを取得する

if(!empty($_GET['name'])) 
{ 
    // check if user is logged  
    if(is_logged()) 
    { 
    $file_name = preg_replace('#[^-\w]#', '', $_GET['name']); 
    $question_file = "{$_SERVER['DOCUMENT_ROOT']}/files/questions/{$file_name}.zip"; 
    if(file_exists($question_file)) 
    { 
    header('Cache-Control: public'); 
    header('Content-Description: File Transfer'); 
    header("Content-Disposition: attachment; filename={$question_file}"); 
    header('Content-Type: application/zip'); 
    header('Content-Transfer-Encoding: binary'); 
    readfile($question_file); 
    exit; 
    } 
    } 
} 
die("ERROR: invalid song or you don't have permissions to download it."); 

URL:ローカルホスト/ get_file.php名= file_nameに

0

あなたが別のディレクトリに保護し、以下で.htaccessファイルを追加したいファイルを置く:

Order deny,allow 
Deny from all 

サーバーとスクリプトこのディレクトリ内のファイルがまだ動作しますが、アクセスしたURLの直接アクセスをしない。フォルダのメンバーの中へ

+0

それは直接リンクを拒否するだけでなく、ユーザーがダウンロードリンクをクリックした場合に拒否する –

+0

あなたのリンクはダウンロードを処理するPHPスクリプトを呼び出していますユーザーは最初にログインしていますか? – Chris

+0

ありがとう私はそれを得た –

関連する問題