繁体   English   中英

Codeigniter图像显示

[英]Codeigniter image display

我正在使用CodeIgniter构建一个简单的图像库。 我希望画廊是安全的,所以我不希望有人未经允许检查我的图像。

例如,如果图像位置是http://www.mydomain.com/images/my_pic.jpg, 我不希望在浏览器中键入此URL时可以访问该图像,但是我希望通过诸如http之类的功能访问该图像 ://www.mydomain.com/controller/function/mypic.jpg ,可以在此处检查权限。

我该如何实现?

将您的图像不保存在公共目录中。

您有公共目录,在其中可以通过在浏览器中键入url访问的公共文件和非公共文件夹(不能通过url访问)。

另外,我敢打赌,CI具有路由系统,因此您不能只在浏览器中输入任何路由并获得访问权限。

好吧,主要是将图像存储在非公共目录中,并将其加载到控制器中。 例如/gallery/image/12 :controller gallery ,动作image和id为12。例如,您将从非公共文件夹/files/images/12.jpg获取文件12.jpg。

如果您有更多指定的问题,请另外创建一个帖子。

您可以通过使用带有以下内容的.htaccess文件来保护映像目录:

DENY FROM ALL

然后使用常规控制器访问图像。 您需要更改文件头,以便将PHP输出解释为图像。

//CODE-IGNITER SPECIFIC STUFF

//INSIDE THE CONTROLLER FUNCTION FIRST CHECK USER PERMISSIONS, THEN ADD SOMETHING LIKE THIS:

$file = 'example.jpg'; //will basically end up being the argument which was passed to the controller

//define the output for the client as a jpg image
header('Content-Type:image/jpeg');
header('Content-Length: ' . filesize($file));

readfile($file); //reads the image file and send output to the client

为了更清楚地说明这一点,您将图像的文件名作为参数传递给控制器​​,检查用户是否有权访问该特定文件,如果是这种情况,则让控制器将图像返回给客户端。 因此,发生的事情是PHP实际上返回了一个图像。

您可以限制直接从URL访问“ IMAGES”文件夹。 您可以为要限制的文件夹分配644权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM