PHP Download
Publicado por Fábio Berbert de Paula 14/11/2002
[ Hits: 9.941 ]
Homepage: https://fabio.automatizando.dev
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.
<?
/*
Criando ambiente no MySQL:
mysql> create database phpdownload;
mysql> connect phpdownload;
mysql> CREATE TABLE contador (
-> arquivo VARCHAR(100) PRIMARY KEY NOT NULL,
-> hits INT DEFAULT 1
-> );
mysql> GRANT ALL PRIVILEGES ON phpdownload.* TO phpdown@localhost
-> IDENTIFIED BY 'uaubaby' WITH GRANT OPTION;
mysql> flush privileges;
*/
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);
?>
Previsão do tempo para Porto Alegre/RS
evePHP: Classe para desenvolvimento PHP
Sistema de Boletos e Cobrança Online
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
De volta para o futuro - ou melhor, para o presente (parte 2) (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (7)









