Proteger Fotos

Se eu criar uma pasta no dentro do protected/fotos, ficaria protegida?

Se sim… como faria para carregar ela no site/sistema.

Venho colocando as fotos na raiz, mais gostaria de fazer algoma mais seguro, para evitar www.site.com.br/fotos

Como faria isso.

Valew

Você teria de criar um action e dentro dele fazer a leitura do arquivo e o transforma-lo em uma variavel para ser exibida dentro do mesmo.

com PHPGD ficaria algo assim:




class ImagensController extends Controller {

	...

	public function actionExibir($id)

	{

		// Le o arquivo na pasta protected/fotos segundo seu ID

		function carregaJPEG($id) {

			

			$path = Yii::getPathOfAlias('application'); // /home/usuario/public_html/protected/

			$imagem = @imagecreatefromjpeg($path.'/fotos/'.$id.'.jpg'); // Abre o arquivo de foto na pasta fotos

			

			/* Em caso de a imagem não existir no sistema */

			if(!$imagem)

			{

				/* Cria uma imagem de fundo PRETO */

				$imagem  = imagecreatetruecolor(150, 30);

				$bgc = imagecolorallocate($imagem, 255, 255, 255);

				$tc  = imagecolorallocate($imagem, 0, 0, 0);


				imagefilledrectangle($imagem, 0, 0, 150, 30, $bgc);


				/* Exibe uma mensagem de erro */

				imagestring($imagem, 1, 5, 5, 'Erro ao Carregar a imagem #' . $id, $tc);

			}


			return $imagem;

		}


		// Informações de Cabeçalho para exibir o PHP como 

		// uma imagem no navegador

		header('Content-Type: image/jpeg');


		// Carrega a Imagem a partir da Função que criamos

		$img = carregaJPEG($id);

		

		// Exibe a Imagem

		imagejpeg($img);

		

		// Encerra

		imagedestroy($img);


	}

	...

}



Simplemente acessar "http://www.example.com/imagens/exibir/id/100002030" para obter a foto de nome 100002030.jpg

Outra opção menos trabalhosa e mais comumente usada, seria você adicionar um .htaccess bloqueando o acesso externo a pasta /fotos da raiz.

valew brodi