[英]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.