Ir ao conteúdo

Posts recomendados

Postado

Olá gente,

 

estou com um projeto em que preciso disponibilizar vários arquivos para download e identificar quem fez o download. Esses arquivos ficam bloqueados depois que alguém baixa eles. Preciso desse dado para fazer um sistema de gerenciamento que identifica quantos downloads uma pessoa cadastrada fez e quais foram os arquivos baixados, mas por enquanto meu foco é fazer esse bloqueio. 

Se possível gostaria de sugestões, porque não sei por onde começar e nem sei se é possível fazer isso com PHP.

 

Muito obrigada a todos

 

  • Moderador
Postado

@BlackM00n_

Olá.  Sim dá para fazer com PHP.

 

No caso, vai ter que registrar em um banco de dados o usuário e o arquivo baixado. E fazer uma contagem.

Exemplo: 

Na tabela do banco de dados:

 

ID  usuario  arquivo_baixado  Nvezes_baixado
1     1        foto.jpg             1
2     1        foto.jpg             1
3     2        arquivo.rar          1

vamos supor que o usuário ID 1 baixou duas vezes a mesma foto e o usuário ID 2 baixou 1 vez o arquivo.rar.

 

Você vai fazer a consulta baseada pelo ID do usuário(campo usuario)

 

SELECT usuario.nome, download.arquivo_baixado, sum(Nvezes_baixado) as qtd
FROM download
WHERE usuario = 1 

Então no php, você vai fazer o teste...

 

if ($qtd >= 3):
    //aqui você faz algo se o usuário baixou 3 vezes
else:
    // aqui você faz algo se o usuário baixou menos de 3 vezes
endif;

Claro que é só um exemplo, eu deixo com 3,  mas se você decidir que cada usuário só pode baixar uma vez,  então só fazer $qtd >= 1

 

lembrando, que todos os códigos que eu apresentei são exemplo e não devem ser copiados. Quanto ao banco de dados, é importante que você modele respeitando as normas formais.

Veja que eu coloquei o campo de usuário com um número e não o nome... porque o nome do usuário vai ficar em outra tabela.. e depois você vai usar o INNER join  para juntar as tabelas. 

Ademais, para dar certo este tipo de coisa, é necessário que suas tabelas sejam do tipo InnoDB e que na tabela mandante, tenha os campos com índices.

 

Caso não saiba como criar relacionamentos e índices no phpmyadmin,   veja este vídeo

 

  • Obrigado 1
  • Moderador
Postado

@BlackM00n_ Além do jeito que eu postei acima, você pode também, ao invés de registrar a cada linha quando um usuário faz um download, podes fazer um update  no campo Nvezes_baixado da tabela, incrementando em 1 a cada vez... assim você não precisa fazer um sum() dos campos.

  • Moderador
Postado

@Matheus Evandro Rech

 

5 horas atrás, Matheus Evandro Rech disse:

usar o inspecionar do navegador e mudar o valor da variável pra 0 ele sempre vai poder baixar ou não

Não entendi sua pergunta....  mudar que variável?

Se falas da variável que pega a contagem de vezes que baixou, não aparece... já que é um processo no php, pelo lado do servidor... não tem como ele trocar o valor...  a  não ser que seja explicitado em algum lugar..

 

Mas caso você fique receoso sobre isso,  podes limitar apenas a um download por usuário baseado pelo IP. OU seja,  registra o IP no banco de dados e em um campo do tipo tinyint, onde o zero vai ser "não baixado"  e 1 será  baixado.

Então, quando o usuário baixar, automaticamente vai ser feito um update set no campo tinyint para 1, então,  aí no php, faça-se um teste se o campo é igual a 1, se for, é porque ele baixou...  e não tem como alterar isso.... 

 

Ambos os jeitos que eu apresentei são válidos... 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...