2010-09-18 6 views
1

У меня есть каталог изображений в корне моего сайта. Он включает в себя изображения, которые должны быть общедоступными, в общедоступном подкаталоге и изображения в личном каталоге, который должен быть доступен только для зарегистрированных пользователей. Проблема заключается в том, что зарегистрированный пользователь может скопировать URL-адрес img, предоставить его не пользователям и теперь у них есть доступ.Ограничить доступ к изображениям Codeigniter

У меня есть файл .htaccess, настроенный уже для предотвращения хотлинкинга. Я подозреваю, что мне нужно создать контроллер, который отображает сервер, и проверяет учетные данные пользователя b4, служащие изображению, и использовать .htaccess для отправки пользователя на этот контроллер, если они пытаются получить доступ к закрытым изображениям? Это лучшая практика? Может кто-нибудь, пожалуйста, напишите какой-нибудь код, чтобы помочь мне лучше визуализировать.

ответ

2

Вы всегда можете использовать PHP для потоковой передачи изображения со скрытого пути после аутентификации пользователя. Создание контроллера называется getimage.php, которую вы называете, как:

<img src="getimage?imagename.jpg" /> 

Тогда в контроллере:

<?php 
class Getimage extends Controller{ 
    function index(){ 
     //code to authenticate user goes here then... 
     header("Content-type: image/jpeg"); 
     if(file_exists(hiddenpath.$_GET['imgid'])){ 
      $img_handle = imagecreatefromjpeg(hiddenpath.$_GET['imgid']) or die(""); 
      ImageJpeg($img_handle); 
     } 
    } 
} 
?>