2014-05-02 23 views
1

我正在用Codeigniter构建Web应用程序。我的服务器上有一些图像,我希望只有登录的用户才能看到它们。登录是使用codeigniter的会话类进行的。Codeigniter上没有验证的图像

我不想让外部用户可以打开图像

http://www.mywebapp.com/images/privateimage.jpg

打开该图片我要控制,如果有一个有效的笨会话,然后给图像。

我试图制作一个名为“图像”的控制器,我试图在htaccess文件中添加一条规则来调用一个检查会话并将图像发送到客户端的函数,但是这

RewriteRule ^images/(.*)$ index.php?/images/$1 [L] 

不起作用。我不太清楚htaccess文件的规则,我不知道是否有更简单的方法来做到这一点,但我想保留图像的url和它在web服务器上的位置之间的对应关系,如果它是可能。

谢谢

+0

难道你不希望它显示直接进入图像,当被包含在一个页面或两者的形象呢? – Donovan

+0

我不希望任何未登录的人都能以任何方式访问此图像。如果我登录链接给我的形象,如果我没有登录链接给我一个错误。 – toso

+0

您是否需要登录的用户才能够直接查看图像?如果没有,那么你可以阻止浏览器包含的图像,并做一些其他更改,以使其可以在您的网站内查看。在提供答案之前,让我知道这是您想要的。 – Donovan

回答

0

证据的概念

第一步。 将图像文件夹放在网络服务器文件夹的外面,这个没有人可以看到图像。

第二步。 创建CONTROLER:

<?php 
class Viewer extends CI_Controller { 
public function __construct() { 
    parent::__construct(); 
    //here you can check if the user has a session if not die!! XD 


} 

public function index() { 
    //nothing here o blank page 
} 


public function see_pic($name) { 
    header ("Content-type: image/jpeg"); 
    $ruta = "/folder/with/pics/".$name; 
    $im = imagecreatefromJPEG($ruta); 
    @ImageJPEG($im); 
     @ImageDestroy($im); 
} 

?> 

然后当你把图像“http://my_server.com/viewer/see_pic/my_dog.jpg