2016-03-01 40 views
1

我在我的服务器上有一个目录,我想让公众无法访问。 (没有。没有访问php文件,图像,任何东西。)如何使用PHP逻辑限制对服务器上目录的访问?

但我想允许某些用户访问这个基于我的PHP布尔值的限制区域。

有没有什么办法可以使用PHP来确定用户是否可以访问一个目录,类似于使用htaccess文件,但具有更多的自定义逻辑?

+0

使用htpasswd的HTTP认证,这链接是一个很好的资源http://www.htaccesstools.com/htpasswd-generator/。您将.htpasswd文件放入您要保护的目录中,并且仅使用用户名/密码进行访问。也阅读这篇文章http://php.net/manual/en/features.http-auth.php –

+0

@MuhammedM。不幸的是,这不是我所要求的。 – geekman

+0

使用示例提供更多的deatail。 –

回答

0

最简单的方法之一是将受限用户重定向到您的主页。

<?php 
    header('Location: http://www.yoursite.com') ; 
    exit; 
?> 

您可以通过在数据库中设置布尔值来允许特定用户访问。

下面的解决方案将基于您的文件存储位置工作。

$file = '/file.png'; // set your file location 
$userAccess = false; 
if (file_exists($file) && $userAccess) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename=your_file.png'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
} 

也检查此link也。

希望它会帮助你:)

+0

但这并不限制目录的内容。只是我把它放在这里的文件。 – geekman

+0

@geekman:检查我更新的答案。 –

0

所以,我终于找到了答案其他地方,它涉及到与htaccess的设置PHP文件作为一种代理的结合 - http://simpletek.raivo.id.lv/restrict-server-files-access-based-on-php-logic/

+0

它不是一个代理或任何其简单的mod_rewrite技术。顺便说一句,解决方案根本就没有保证,我希望你不要听那个:家伙建议添加一个参数到文件的URL,只是为了让它下载安全。糟糕的做法,非常糟糕。任何知道额外“安全”字符串的人都可以获取您的内容。 –

相关问题