2012-01-26 16 views
0

とURLへのファイルのダウンロードを制限するための簡単な方法私は、有効なURLで、私のサイトを訪問するユーザー(パラメータは、データベースにチェックされます)PHP:有効なGETパラメータ

は、サーバーからファイルをダウンロードできるようにしたいです有効なURLを持つサイトにアクセスしない人はそうすることができません。

は現在、私はこれは素晴らしいですが、 site.com/file.mp3を言うだけで、ファイルへの直接リンクを訪問から誰かを防ぐことはできません

if (isValid($get_param)) 
{ 
    print link to file 
} else {  
    print some other message 
} 

行うことができると思います。

この方法でファイルをダウンロードできないようにするにはどうすればよいですか。ただし、URLに有効なgetパラメータがある場合はダウンロードできます。

+2

[PHPでMP3ファイルを提供することはできますか?](http://stackoverflow.com/questions/1516661/can-i-serve-mp3-files-with-php) –

+0

これはその質問と重複していません – algorithmicCoder

+2

@algorithmicCoder:はい、そうです。 – Wrikken

答えて

0

これはサーバー上のファイルのアクセス許可で行う必要があります。

PHPコード権限のみがそのファイルにアクセスできるようにします。

+0

@downvoter、お世話になりますか? – Neal

+1

あなたが言ったことは間違っていませんが、尋ねられたものに答えることができません:) –

0

あなたはreadfile() manual page上の最初の例に示すように、ダウンロードを強制的にheader()と組み合わせてreadfile()を使用して、その後、直接アクセスを回避するために、Webサーバのドキュメントルートの外にあなたの保護されたファイルを移動することを検討することがあります。

0

リンクを印刷する代わりに、検証後にこのコードを追加してみてください。

$file = "something.zip/pdf"; 

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=".$file); 
header("Content-Description: File Transfer"); 
@readfile($file); 

これは単に直接ダウンロードを開始し、ユーザーファイルが

+0

このコードは、それがどのタイプのファイルであるかに依存しません。テキスト、zip、mp3、 。 – Kartik

0

どこから来ているあなたは、不正アクセスを防止するために、PHPであなたのダウンロードを処理する必要が知るようにdoesntの:

$file = "path/to/file.mp3"; 

header("Content-Disposition: attachment; filename=".basename($file)); 
header("Content-Type: audio/mpeg"); // you need the correct mime-type for your file 
header("Content-Length: ". filesize($file)); 
header("Content-Transfer-Encoding: binary"); 
readfile($file); 
exit; 
関連する問題