2016-10-06 3 views
0

私はかなり単純なPDFファイルのダウンロード保護を探していますが、どこから始めたらよいか分かりません。1つのURLからファイルをダウンロードする方法を教えてください。

これはPDFファイルで、パスワードで保護されたWordPressページにダウンロードリンクを提供しています。誰かが私のリストにサインアップすると、パスワードを記載したメールが届きます。パスワードで保護されたページにはPDFファイルへのリンク

このページ(特定のURL)のみがファイルにアクセスできるようにします。あなたがページのパスワードを持っていない限り、リンクの共有は不可能です。

htaccessファイルでこれを達成できますか?このような何か:

<Files *.pdf> 
    order Deny,Allow 
    Deny from all 
    Allow from *SPECIFIC_URL* 
</Files> 

おかげで...私は認証チェックし、認証がOKであれば、適切なヘッダを使用してPDFファイルを返すPHPスクリプトを作成します

+1

があなたの代わりにPHP経由のPDFファイルを提供する必要があります。あなたのurlがpdfを要求していないことに注意してください。訪問者のブラウザはです。 – jeroen

+0

これはうまくいきません:-(? そして、もし私がphpでファイルを提供していたら、私はアクセスを制限できますか? –

+0

私はそうは思わないphpでファイルを提供するときは、 – jeroen

答えて

0

を助けてください。そしてpdfへの直接のリンクの代わりにページのスクリプトへのリンクを使用してください。 Pdfファイルは、あなたの "web"フォルダの外に置くことができます。

+0

OK、ダウンロードを処理するスクリプトが必要です。パスワード保護されたページにスクリプトへのリンクを入れてください しかし、人々はスクリプトへのリンクを共有することはできますか?そうであれば、誰かがスクリプトへのリンクを共有していれば誰でもスクリプトにリンクできますファイルを入手してください。 その理由は、私がダウンロードを提供するようにスクリプトを制限したいのですが、その特定のページから舐めた。その後、最初にそのページにアクセスしてからクリックする必要があります。そうしないと、スクリプトはリンクを提供しません。 これは可能ですか? –

+0

@Maurice $ _SERVER ["HTTP_REFERER"]があなたのホストと同じであることを確認できます。 –

0

まあ、それぞれのサインアップで、デフォルト値 'working'を持つデータベースのユーザーに 'download_state'を割り当て、ユーザーが保護されたページにアクセスすると、 'download_state'がまだ有効かどうかを確認します。 それはPHPは、あなたが

$file_url = path/document.pdf; 
    header('Content-Type: application/pdf'); 
header("Content-Disposition:attachment;filename='document.pdf'"); 
    header("Content-Transfer-Encoding: Binary"); 
    header("Content-disposition: attachment; filename=".$pdfname); 
    readfile($file_url); 

そして、このようにpdfファイルの場所に次の例を使用することができ、ダウンロードサービスを提供するために

If (download_state == "working") 
{ 
ServeDownload 
Update download_state to 'expired' 
}else 
Die("Your link is expired please get a new one") 

を「期限切れ」にダウンロードリンクとアップデート「download_state」をします提供されます場合には隠される。

0

あなたは、あなたが探しているものではなく、セットアップが非常に簡単な一時的なプレースホルダとして、セキュリティを実現することができます。パスワード保護付き.htaccess。ユーザーにパスワードを要求し、htpasswordをその場で生成してユーザーに与えることができます。もちろん、その手間のかからない方法ですが、何よりも優れています。そして誰もがファイルへのアクセス権を持っていない間に書き込むことができる独自の "admin"パスワードを持つことができます。しかし、私が言及したように、その一時的なものですが、セットアップするのは簡単なはずです。

http://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/からコード)

<?php 
// Password to be encrypted for a .htpasswd file 
$clearTextPassword = 'some password'; 

// Encrypt password 
$password = crypt($clearTextPassword, base64_encode($clearTextPassword)); 

// Print encrypted password 
echo $password; 
?> 
関連する問題