Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
salve galera tudo nos conformios? estou com uma dúvida para a qual venho pedir dicas e opiniões. seguinte estou criando um site que será acessado por alguns usuários que terão seus conteúdos próprios e queria uma forma de um não poder ver as imagens, vídeos, arquivos, etc dos outros. seria algo tipo facebook aonde uma imagem pode ser definida como privada. já que citei om facebook, como ele controla isso? alguem sabe? será unicamente no rewrite do htaccess? será incluindo os arquivos em blob no banco de dados? essa segunda opção não me apraz porque logicamente o banco ficaria gigantesco. como seria a forma mais eficaz?
agradeço pelas dicas.
Vamos separar por partes, para limitar o conteúdo que o cara vai ver é algum parâmetro em banco
Permissão
Publico - Todos visualizam
Privado - Apenas o proprietário visualiza
Amigos - ... etc
É o famoso "if" no código
if($publico)
{
echo "Conteúdo"
} echo "Conteúdo"
} echo "conteúdo indisponível"
}Em armazenar imagens em bancos, existem alguns tópicos sobre esse assunto no fórum, mas resumindo o custo de redundância e escalonamento de um servidor de banco é maior que de um servidor de aplicação, então em miúdos prefira manter os arquivos na aplicação com nomes não amigáveis, e sem listar arquivos do diretório.
Acredito que o htaccess e rewrite não sejam necessários para essa função, apenas para os bloqueios de listagem dos diretórios.
Ou colocar a imagem física em um local fora da pasta que não acesse via http e busque via servidor e retorne em base64
em primeiro lugar agradeço a todos por participar.
Lucas Guima eu sempre passo umas horas e por vezes dias pesquisando antes de postar. inclusive vai fazer dois anos que me inscrevi no forum e só postei 3 perguntas contando essa desse tópico mas já postei dezenas de respostas a perguntas de outros membros. nesses quase dois anos foram incontaveis as vezes que resolvi dúvidas apenas pesquisando no forum e no famoso google :P mas tem momentos que a gente não encontra as vezes por não saber os termos corretos para usar na pesquisa. dessa vez mesmo pesquisei no forum e no google usando termos em português e em inglês mas não consegui nada alem do que eu já imaginava.
Danilo Soncini, essa parte de liberar o acesso ao conteúdo tendo por base as permissões no cadastro do banco de dados é tranquilo. a minha dúvida mesmo é como as redes sociais como o face fazem para um usuário não ter acesso externo ou via browser ao conteúdo privado de outro usuário mais especificamente imagens, vídeos e arquivos. eu queria entender o processo para ver se consigo fazer parecido. o que eu tenho em mente a princípio é cadastrar todos os caminhos desses arquivos no banco de dados. algo do tipo:
id | iduser | pasta | nomearquivo
ou ainda nem precisa cadastrar no banco. se eu programar para os arquivos serem salvos com um prefixo que seja a id do usuário posso usar o prefixo para carregar as imagens apenas desse usuário por exemplo na página. com isso posso colocar na página os links apenas para o conteúdo cadastrado pelo usuário. e para evitar que outros usuários consigam acessar pela barra de endereço do browser digitando por exemplo www.site.com.br/pasta/imagem.jpg ou que conseguissem abrir a imagem externamente em outro site eu usaria o htaccess. tenho em mente ainda bloquear acesso direto as pastas do site ou seja só poderá acessar via uma página index. ainda outra coisa que tenho em mente é trocar o nome do arquivo por um md5 por exemplo.
uma última pergunta, vocês acham mais prático criar uma pasta para cada usuário ou deixar tudo em uma pasta só com a identificação do usuário? por exemplo: iduser_nomearquivo.ext
agradeço mais uma vez.
1 dica: pesquise sobre sessões
Fernando C agradeço pela resposta mas não é esse o caso. as seções não são segredo para mim.
Com Sessions você faz tudo isso.
Só atribuir uma verificação simples de algoritmo.
Em todo conteúdo, você terá que cadastrar a quem pertence.
se (id do dono do conteudo == id da sessao)
libera a visualização
senao
não mostra nada, ou algum outro conteudo generico para todos.
Agora se a pessoa tiver a URL final da imagem exclusiva, por ex. não há o que ser feito.
Mesmo no Facebook, se a imagem estiver privada, ela copia a URL dela e passa pra alguem, ela verá normalmente o JPG.
Maykel como eu falei essa parada de liberar por sessions para visualização dentro da página é tranquilo, isso não é segredo para mim. a questão é exatamente abrir o arquivo externamente pela url no navegador ou a partir de outro site nos chamados hot links. eu já bloqueio isso usando htaccess. o que eu queria saber é se alguém conhece algum outro método para fazer esse bloqueio.
Acredito que só por htaccess e se estes arquivos estiverem em diretórios separados por usuario, por exemplo. Dessa maneira, travaria o acesso ao diretório com determinado ID.
Mas na prática não sei nem se é possível, mas se você diz q já fez, até gostaria de saber como foi feito!
eu uso em um nível anterior ao public_html para funcionar para todas as pastas e subpastas um arquivo .htaccess com os parâmetros abaixo que eu comentei para saber o que faz o que:
como ele controla isso? alguem sabe?
não sei qual é a estratégia exata que eles usam, porém consigo imaginar formas de fazer.
será unicamente no rewrite do htaccess?
certamente não.
será incluindo os arquivos em blob no banco de dados?
também não.
Você terá que fazer esse controle programaticamente.
Imagine os estados:
-> Pode ser público
-> Pode ser privado
Okay ? Considere uma delas como "padrão" (default). Peguemos o estado público como padrão.
Sempre que algo tiver que ser exibido, seja por URL direta ou no meio de alguma outra listagem, vc terá que verificar em um banco de dados, quais as condições de exibição daquele conteúdo.
Se for público, não terá nada no banco.
Se for privado, vc terá o ID de quem pode visualizar. Seus usuários estão sempre logados.
Verifique se o usuário atual na sessão possui acesso aquele conteúdo, fazendo uma busca no banco.
Quanto a URL direta, sempre que algo for privado, impeça de ser exibido, por você não conseguir saber quem é que está tentando ver. (caso não haja uma sessão aberta).
William Bruno agradeço pela resposta mas como eu disse o controle dentro do site usando sessões, cookies e o banco de dados é tranquilo. isso para mim não é segredo. a questão que me ronda se trata apenas sobre a abertura ou download de arquios digitando a url na barra de endereços como por exemplo www.site.com.br/imagem.jpg ou www.site.com.br/arquivo.zip mas para isso também já tenho alguns macetes como bloquear acesso direito ao diretório colocando uma página index nele e usando -indexes no htaccess alem de usar outros truques (veja o exemplo de htaccess que postei anteriormente). só queria mesmo ver se alguém sabia de outros truques para esse bloqueio de acesso externo a imagens, vídeos e outros arquivos como zip e exe. mas acho que é só isso que já uso mesmo.
de qualquer forma agradeço a todos.
Já pesquisou na net (leia Google) sobre isso?