Codeigniter图像显示

时间:2014-05-04 23:01:39

标签: php image codeigniter

我正在使用 CodeIgniter 来构建一个简单的图片库。我希望图库安全,所以我不希望任何人在未经许可的情况下检查我的图片。

例如,如果图片位置为http://www.mydomain.com/images/my_pic.jpg ,我不希望在浏览器中输入此网址时可以访问该图片,但我希望通过{{ {3}},可以检查权限。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:0)

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

您有公共目录,其中公共文件可通过在浏览器中输入网址来访问,而非公共文件夹则无法通过网址访问。

此外,CI有路由系统,我敢打赌,所以你不能只在浏览器中键入任何路由并获得访问权限。

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

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

答案 1 :(得分:0)

您可以使用包含以下内容的.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实际返回一个图像。

答案 2 :(得分:0)

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