我在我的服务器上有一个目录,我想让公众无法访问。 (没有。没有访问php文件,图像,任何东西。)如何使用PHP逻辑限制对服务器上目录的访问?
但我想允许某些用户访问这个基于我的PHP布尔值的限制区域。
有没有什么办法可以使用PHP来确定用户是否可以访问一个目录,类似于使用htaccess文件,但具有更多的自定义逻辑?
我在我的服务器上有一个目录,我想让公众无法访问。 (没有。没有访问php文件,图像,任何东西。)如何使用PHP逻辑限制对服务器上目录的访问?
但我想允许某些用户访问这个基于我的PHP布尔值的限制区域。
有没有什么办法可以使用PHP来确定用户是否可以访问一个目录,类似于使用htaccess文件,但具有更多的自定义逻辑?
最简单的方法之一是将受限用户重定向到您的主页。
<?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也。
希望它会帮助你:)
但这并不限制目录的内容。只是我把它放在这里的文件。 – geekman
@geekman:检查我更新的答案。 –
所以,我终于找到了答案其他地方,它涉及到与htaccess的设置PHP文件作为一种代理的结合 - http://simpletek.raivo.id.lv/restrict-server-files-access-based-on-php-logic/
它不是一个代理或任何其简单的mod_rewrite技术。顺便说一句,解决方案根本就没有保证,我希望你不要听那个:家伙建议添加一个参数到文件的URL,只是为了让它下载安全。糟糕的做法,非常糟糕。任何知道额外“安全”字符串的人都可以获取您的内容。 –
使用htpasswd的HTTP认证,这链接是一个很好的资源http://www.htaccesstools.com/htpasswd-generator/。您将.htpasswd文件放入您要保护的目录中,并且仅使用用户名/密码进行访问。也阅读这篇文章http://php.net/manual/en/features.http-auth.php –
@MuhammedM。不幸的是,这不是我所要求的。 – geekman
使用示例提供更多的deatail。 –