Tenho o seguinte problema, possuo em minha aplicação com uma pasta que contem arquivos do tipo imagem. Os seguintes arquivos poderão somente ser acessados se o usuário estiver logado na aplicação.
Minha duvida é como fazer isto?
Alguém poderia indicar a melhor forma para resolver isto.
faça o controle de acesso para o método usando um filter ou algo parecido
deixe os arquivos em uma pasta protegida (.htaccess ou fora do public_html)
no método faça algo como:
//se vc guarda no db
$model=MeusArquivos::model()->findByPk($id);
$file=$model->arquivo_path;
//ou busque no diretorio
$file=MEU_CAMINHO_PARA_ARQUIVOS.DIRECTORY_SEPARATOR.$id;
//ou como for
//usando método xSendFile do Yii para enviar
Yii::app()->request->xSendFile($file);
Então gustavo o problema não esta no envio, e sim, no momento de requisição de uma imagem, por exemplo
htt p: //ww w.meusite. com/images/empresa1/1.jpg
a idéia seria que a imagem 1 como na url acima só pudesse ser visualizada por usuários logados na aplicação
na empresa 1.
Tentei fazer .htaccess para quando o usuario fizer uma requisição a esta pasta, redireciono a um verifica.php
onde verifico se o usuário esta logado e pertence a empresa… se ele não esta logado consigo redireciona-lo a tela de login, porem se ele esta logado se eu nao redireciono para nenhum lugar ele continua no verifica.php e se eu tento redirecionar para a imagem, ele novamente cai no verifica, assim, entrando em loop
Programador é uma desgraça mesmo. Sempre faz coisas absurdas pra tarefas simples
Eu fiz isso usando stream na mão por não conhecer este recurso no FW. Vlw por compartilhar, vou mudar pra esta solução, que é absurdamente mais simples
O método Yii::app()->request->xSendFile($file); é utilizado para fazer download do arquivo, não realmente isto que estou precisando, o que preciso é apenas de um bloqueio pra visualização da imagem no browser que o usuário consiga visualizar a imagem pelo browser somente se estiver logado no sistema.