sistema de upload de fotos - PHP - Portugal-a-Programar
sistema de upload de fotos
Por neverdie, 17 de Março de 2008 em PHP
mais uma vez ca estou eu a chatear....
É seguinte: alguem me pode dar uma ideia como o seguinte sistema pode ser implementado, o sistema é
o seguinte tenho os utilizadores podem fazer upload de fotos e quando fizerem login apareçao as fotos do utilizador?
É de saber com posso fazer(nao é presiso codigo so a descrisao)..., tipo faço upload dos fotos para uma directoria e
gravo-as com o login do utilizador procuro-as e mostro-as?
Fazes upload para uma pasta... envias o caminho para a uma campo da tabela que se quizeres podes ter lá informações do utilizador (normalmente o codigo de utilizador) e um timestamp para saberes quando foi "uploadado" a foto.
Boa sorte mais alguma dúvida avisa
Se quiseres seguir o exemplo de fórums, etc... Guardam a própria imagem na base de dados, a fim de poder proteger contra o roubo de imagens, etc...
Mas eu estou a usar MySql nas tabelas da para guardar as imagens?
Dá, tens é que pesquisar, que eu nunca fiz dessa maneira.
Guardam a própria imagem na base de dados, a fim de poder proteger contra o roubo de imagens, etc...
Não obrigatoriamente. Basta usares um .htaccess a restringir pelo referer, um script PHP para ir buscar as imagens a uma dir fora do httpd, etc. O método que disseste vai sobrecarregar-te o SGBD.
Os métodos que disses-te também têm as suas desvantagens.
Pelo referer é facilmente "exploitável". Pelo php carregas mais cpu e (talvez, se for de fora) bandwidth.
E isso de carregar sgbd, não sei até que ponto isso é provado, visto que muitas aplicações web andam a usar esse método.
Tem é a desvantagem de que quando queres fazer backup, vai aumentar o tamanho muito
Se fores buscar à bd, que protecção tens? Referer. E vai carregar o SBBD bastante, vais aumentar o número de ligações à base de dados, vais estar ter o overhead de mais um serviço a correr no servidor, etc. Uma simples protecção de referer através do Apache bloqueia 50% da bandwidth theft.
Para ires buscar à bd, tens que aceder a partir de um php e podes ver se o utilizador está logado no site por exemplo. É uma protecção muito mais avançada. Quanto ao uso da BD, nada que não se resolva com optimizações e cache, logo aí está o porquê da forte implementação deste sistema em sites de download/compra de imagens.
Claro que isto não é para ser usado em larga escala, mas há alturas em que é mesmo necessário se quiseres proteger as imagens.
Pera pera! Então tu tinhas um file PHP e o que fazia o file para além de ir buscar a imagem à bd?
Então como é que vais buscar a imagem à BD? tens que fazer uma query, certo? Depois de o utilizador estar autenticado, mandas um header de imagem e fazes echo do código da imagem.
Eu estou a falar hipoteticamente, pois nunca fiz algo com este sistema. Mas seria assim que faria a aproximação ao problema.
Isso não te protege de bandwidth theft, até te piora esse problema uma vez que não fazes qualquer verificação de onde está a vir o tráfego (ie. quem o mandou).
Lol, tipo, tens que tar logado (num sistema de login + password), ou seja tens que ter uma sessão de utilizador registado ligada, para ver uma imagem. É protecção garantida.
Então os teus visitantes mandam-te à fava, porque é inconcebível o teu visitante (isto aplica-se mais nos novos visitantes) ter de te dar dados pessoais para ver uma simples imagem.
Hummm, eu já respondi a isso. Este sistema não é para ser usado em massa. Só quando queres ter a certeza que proteges as imagens. E além disso. Se o utilizador estiver no site, podes iniciar uma sessão de "guest" e permitires ele aceder às imagens, através de eventos.
E como vais passar essa sessão? Por cookies? Tens sempre de maximizar o suporte do teu software e depender o menos possível do utilizador, e muita gente tem os cookies desactivados.
A melhor forma que tens de te proteger contra bandwidth theft sem perder performance no servidor é mesmo uma verificação de referal por parte do httpd.
Depende, isso teria que ser pensado, como disse não estou a implementar isto em lado nenhum, mas um exemplo disto são os fórums VBulletin.
Como já disse também, este sistema torna-se o melhor se queres ter o controlo absoluto de quem vê as imagens, não só pela bandwidth, mas também para não roubarem imagens com muita facilidade, pois podes definir permissões.
A protecção por referer é a melhor para o bandwidth theft em geral, continua a ser o melhor. Mas para protecção avançada, é obsoleto.
Se quiser protecção avançada, o melhor que me está a passar pela cabeça e mandar logo o output da imagem na primeira resposta, embebido no HTML, o que torna a resposta pesada e impossibilita o caching...
O cache do cliente não interessa. Eu quando mais acima referi o cache, era no servidor para responder mais rapidamente a queries recentemente usadas.
"mandar logo o output da imagem na primeira resposta, embebido no HTML, o que torna a resposta pesada"
<img src="data:image/gif;base64,R0lGODlhEQARAIQPAAAAAC83LzlBOUBKQEhSSF9tX2t7a3eJd4CQgJKgkq64rsjQyNvf2%2BTo5Pb49v%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FyH5BAEKABAALAAAAAARABEAAAVgICSOZGmeUKE6qDEWy6IQp8G4xyMfdGkzi0NDgUAcBD6GUqg4HAZI0o%2FBdBaio%2BkhZsWKptRF4nBduL7KdEB1VZqzizQgIBC4z%2FC0%2Fm0yxPd4fX9AgTVxfChwhYkQiyMhADs%3D" />
lol e para ires buscar esse código, o que usas? ou abres uma imagem e fazes echo do código em php, ou vais buscar à BD. é exactamente a mesma coisa a que eu estava a dizer. Estás é a aplicá-la a uma tag img.