Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Apache中的图像显示权限_Php_Apache_Permissions_Acl - Fatal编程技术网

PHP/Apache中的图像显示权限

PHP/Apache中的图像显示权限,php,apache,permissions,acl,Php,Apache,Permissions,Acl,我有一个带有登录系统的PHP站点,我正在尝试创建一个只有特定用户名才能查看特定图像的功能。我想我要做的不仅仅是更改.htaccess文件,因为a)这无助于区分哪些用户被允许/不被允许查看图像,b)如果有人输入图像的确切URL(“directory/images/photos/230ru0q0238rn230nd\u asdi0nqn8.jpg”),他们仍然可以查看图像(因为它是目录中的物理文件,而不是数据库中的文本等)。同样,通过.htaccess进行限制会将目录作为一个整体或其中的所有文件进行

我有一个带有登录系统的PHP站点,我正在尝试创建一个只有特定用户名才能查看特定图像的功能。我想我要做的不仅仅是更改.htaccess文件,因为a)这无助于区分哪些用户被允许/不被允许查看图像,b)如果有人输入图像的确切URL(
“directory/images/photos/230ru0q0238rn230nd\u asdi0nqn8.jpg”
),他们仍然可以查看图像(因为它是目录中的物理文件,而不是数据库中的文本等)。同样,通过.htaccess进行限制会将目录作为一个整体或其中的所有文件进行限制,因此我无法确定它是如何工作的。理想情况下,所有图像都会通过尝试直接通过其直接URL进行访问而被阻止,并且如果用户的会话/用户名有效,则图像只会出现在
标记之间,否则它们会收到错误消息n错误消息


我听过术语ACL,但我不确定这是否与我正在尝试的操作有关。

您可以创建一个简单的上下文,将图像作为流输出。输出的图像取决于id(或某些标识符),例如:


viewImages.php检查用户是否已登录/授权(最有可能通过$\u会话),如果已登录/授权,则可能会使用将图像发送到浏览器。

授权和ACL方案可能会有所不同,但要实现问题的基本目标:

  • 将图像放在PHP可以读取的非web访问目录中
  • 使用
    .htaccess
    将所有请求重写为脚本(这可能会消除前面的步骤,假设它拒绝对文件的任何直接访问)
  • 确认请求用户可以查看请求的图像
  • 使用
    readfile()
    (或多种其他函数)输出图像
viewImages.php?imageId=234643