我正在使用 CodeIgniter 来构建一个简单的图片库。我希望图库安全,所以我不希望任何人在未经许可的情况下检查我的图片。
例如,如果图片位置为http://www.mydomain.com/images/my_pic.jpg ,我不希望在浏览器中输入此网址时可以访问该图片,但我希望通过{{ {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权限。