2016-11-12 126 views
0

我想拒绝访问文件! 我发送PDF链接给这样一个朋友:http://www.domain.com/pdf/name.pdf 当我的朋友尝试访问该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. 

你可以为了得到正确的密码值,为您的htpasswd文件运行下面的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; 
?> 

时,有人会尝试连接到这个网址,他们将被提示进行身份验证

enter image description here

+0

您也可以使用程序[htpasswd](https://httpd.apache.org/docs/current/programs/htpasswd.html) –

0

你需要把一些逻辑在服务器端之前donwload的PDF文件,首先你需要一台服务器页面是c如果用户登录(检查会话在PHP手册),只有当用户有会话时执行登录才能下载PDF文件(检查从PHP下载pdf文件),如果用户没有登录你重定向用户到登录页面,最后在登录页面服务器端,当你检查用户有效时,你可以设置用户在数据库中的数据,例如。

一个非常简单的例子是这样的:

//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"); 

你需要阅读有关会议和下载文件,也需要把登录的对象有自己的责任。

而在服务器端的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