Ограничить доступ к изображениям Codeigniter - PullRequest
1 голос
/ 19 сентября 2010

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

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

1 Ответ

2 голосов
/ 30 сентября 2010

Вы всегда можете использовать 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);
        }
    }
}
?>
...