защита изображений в кодеринговом

Я использую следующий код в своем контроллере:

//function to protect images from being accessed directly. function getImage($img_id){ //code to authenticate user goes here then... $url = $this->data['base_url'].'system/application/images/c/thumbs/'; $filepath = $url.$img_id; header("Content-type: image/jpeg"); if(file_exists($filepath)){ echo "we are here"; $img_handle = imagecreatefromjpeg($filepath) or die(""); echo $img_handle; ImageJpeg($img_handle); } } 

На мой взгляд, чтобы получить изображения, я использовал следующий код:

 <img src='<?php echo base_url(); ?>index.php/Controller/getImage/obama.jpg' width="100px"> 

Теперь, даже если он входит в контроллер, он не отображает изображение. Файл Obama находится в правильном каталоге. Понятия не имею почему.

Ваша проблема заключается в том, что вы выводите текст в браузер, а затем изображение. Браузер попытается отобразить изображение, но он будет поврежден.

 header("Content-type: image/jpeg"); if(file_exists($filepath)){ echo "we are here"; $img_handle = imagecreatefromjpeg($filepath) or die(""); echo $img_handle; ImageJpeg($img_handle); } 

Кроме того, если вы хотите сделать echo вы не можете отправить header говорящий «эй, это изображение jpeg».

вы уверены, что изображение можно получить через $ this-> data ['base_url']. 'system / application / images / c / thumbs / obama.jpg, вы пытались получить доступ к нему в браузере, не так ли?

Кроме того, избегайте печати текста перед визуализацией изображения, это может привести к повреждению изображения.

Если все еще не работает, дайте нам знать скриншот страницы с ошибкой, что это значит.