2016-11-12 2 views
0

ファイルへのアクセスを拒否したいです! 私はこのような友人にpdfリンクを送ります:http://www.domain.com/pdf/name.pdf 私の友人がそのpdfリンクにアクセスしようとすると、私はアクセスを拒否し、ログインページにリダイレクトしたいと思います。特定のファイルへのアクセスを拒否しましたが、ログイン後にそのファイルへのアクセスを許可します。

ありがとうございました!

アップデート:私はこのように作られたとの仕事の美しいいくつかのものを検索し、読んだ後、上記のコードです:

RewriteEngine on 
 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomainname/pdf/ [NC] 
 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomainname/pdf/.*$ [NC] 
 
RewriteRule ^pdf(/.*)\.(gif|jpg|pdf)$ - [F] 
 
ErrorDocument 403 /error/index.php

+0

私はあなたがいくつかの基本的なドキュメンテーションを読み始める示唆しています。これは標準であり、よく文書化されており、インターネット上で簡単に見つけることができます。 – arkascha

+0

リソースへのプライベートアクセスを提供するCMSをセットアップします。友達のアカウントを追加することができます。 –

答えて

1

あなたは、簡単な.htaccessの認証

を使用する必要がありますが、

/path/to/pdf/.htaccess

AuthType Basic 
AuthName "protected area" 
AuthUserFile /path/to/pdf/.htpasswd 
Require valid-user 

/path/to/pdf/.htpasswd

パスワードは暗号化してbase64でエンコードする必要があります。

myusername:$apr1$EzX1xHNv$NgbgAnflbfzjI0Vhxwv8q. 

誰かがこのURLに接続しようとしたとき、彼らは認証

の入力が求められます
<?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; 
?> 

あなたのhtpasswdファイルの正しいパスワード値を取得するために、次のPHPスクリプトを実行することができますあなたは、サーバー側でいくつかのロジックを配置する必要があり前に、PDFファイルをdonwload、最初のサーバー・ページCを必要とする

enter image description here

+0

また、プログラム[htpasswd](https://httpd.apache.org/docs/current/programs/htpasswd.html)を使用して、 –

0

あなたがログインしていない場合は、ユーザーがログインしているかどうか(PHPマニュアルでセッションを確認)、ユーザーがセッションを持っている場合のみ、pdfファイルをダウンロードするためのログインを実行します(pdfファイルをDonwloadingするユーザーをログインページに、最後にログインページサーバー側で、ユーザーが有効であることを確認すると、セッション中のユーザーのデータをデータベースなどから設定します。

非常に簡単な例は次のようになります。

//donwloadpdf.php 
if (session_status() == PHP_SESSION_NONE) { 

    session_start(); 
} 

if (!isset($_SESSION['user_id'])) { //user not logged in 

    redirect('login_page.php'); 

} 

//user logged in 
header("Content-type:application/pdf"); 

// It will be called downloaded.pdf 
header("Content-Disposition:attachment;filename='downloaded.pdf'"); 

// The PDF source is in original.pdf 
readfile("PD_FILE.pdf"); 

あなたはセッションについて読み、ファイルをダウンロードする必要があり、また、あなたが独自のresponsabilityを持つオブジェクトにログインを置く必要があります。

とサーバ側であなたのlogin_page.phpのいくつかの非常に簡単な例は次のようになります。

//login_page.php 
//if is POST 
//put some real logic to check if the user is valid 
if (true) { 

    $_SESSION['user_id'] = 1; //put real data from database 

} 
//end of logic to check if the user is valid 
関連する問題