Linux slogan
Visite também: BR-Linux.org · Dicas-L · SoftwareLivre.org · UnderLinux

Linux banner
Linux banner


» Screenshot


Artigo

Criando um contador de downloads com PHP e MySQL
Linux user
fabio
04/11/2002
Este artigo descreve como criar um contador de downloads em PHP, que armazena o número de downloads de um arquivo do seu site numa tabela do banco de dados MySQL.
Por: Fábio Berbert de Paula | Blog: https://twitter.com/fabiodovol
[ Hits: 43438 ]
Conceito: 10.0   1 voto(s)1 voto(s)1 voto(s)1 voto(s)1 voto(s) + quero dar nota ao artigo

Elaborando o script - parte final

Viram só, um contador de download não é nenhum bicho de sete cabeças. Vamos juntar nossas partes do programa e mostrar a versão final do script:

<?
chdir('./publico'); // entrar no diretório público

if (!is_file($arquivo)) { // se o arquivo não é arquivo ...
echo "Erro: arquivo $file não encontrado !";
exit; // ... aborte o programa
}

$con = mysql_connect('localhost','phpdown','uaubaby');
mysql_select_db('phpdownload');

$consulta = "SELECT arquivo,hits FROM contador WHERE arquivo='$arquivo'";
$res = mysql_query($consulta,$con);
/*
certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda
não consta em nossa tabela, vamos inserir um novo registro, caso contrário
vamos somar um hit ao registro existente
*/

if ($saida = mysql_fetch_array($res)) { // registro existe
$hit = ++$saida[1]; // some 1 (um) ao número de cliques
$update = "UPDATE contador SET hits=$hit WHERE arquivo='$arquivo'";
mysql_query($update,$con); // atualize o registro
} else {
$insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')";
mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão
// de hit é 1 (um)
}
$tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes

// enviar os cabeçalhos HTTP para o browser
header("Content-Type: application/save");
header("Content-Length: $tamanho");
header("Content-Disposition: attachment; filename=$arquivo");
header("Content-Transfer-Encoding: binary");

// abrir e enviar o arquivo
$fp = fopen("$arquivo", "r");
fpassthru($fp);
fclose($fp);
?>
Para usar o mesmo, sempre que for criar um link para download, copie o arquivo para o diretório ./publico e defina a referência para./download.php?arquivo=nome_do_arquivo:

Clique aqui

Conclusão: uau, isso é mais divertido que tomar sorvete no shopping !

Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br

<< Página anterior    




Páginas do artigo
   1. Introdução
   2. Criação do banco de dados
   3. Elaborando o script - parte 1
   4. Elaborando o script - parte 2
   5. Elaborando o script - parte 3
   6. Elaborando o script - parte final

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por gustavo_marcon em 22/03/2003 - 12:29h:

muito interessante este script. valeu!


[2] Comentário enviado por rjardim em 11/07/2004 - 16:34h:

bom, seu que minha pergunta nao vai ter uma resposta muito fácil, mas vai assim mesmo:

eu quero usar o script acima, mas o meu banco de dados tem um campo do tipo BLOB onde os arquivos para download ficam armazenados, mas o problema eh que ate agora nao consegui criar os links para downloads destes arquivos.

www.wrsistemas.com.br/updates.php


[3] Comentário enviado por elrafael em 12/04/2007 - 16:10h:

Só uma dica....

Sempre verifique qdo o usuário poder passar valores de variáveis.

tipo, colocar ?arquivo=qualquer_coisa (inclusive sql injection)

de resto, tá simples e objetivo! parabéns!


[4] Comentário enviado por brunoestevao em 12/03/2008 - 14:50h:

O tuto ta muito bom.
Se implementar um uso de sessão para impedir que o usuário altere o código, ficará ainda mais seguro.

Abraços

Bruno Estêvão
www.sempihost.com.br
Hospedagem de sites com 30 dias grátis



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.