Počítadlo downloadů v PHP

Napsal O webu (») 3. 5. 2007 v kategorii PHP/HTML, přečteno: 1941×

Velmi praktická a taky hojně používaných věc - počítadlo stáhnutí souboru.

Počítadlo stáhnutí souboru


Jednou z celkem praktických a taky hojně používaných věcí je počítadlo stáhnutí souboru. Po každém kliknutí na odkaz stáhnutí se připočte jednička a my si pak můžeme ověřit, kolikrát byl soubor stažen a tvořit i statistiky.
Takovéto počítadlo lze realizovat dvěmy způsoby.
1) zápis do souboru
2) zápis do databáze

V tomto článku si ukážeme způsoby oba a Vy se pak můžete rozhodnout, který z nich použít.

Použití souboru


V první řadě si vytvoříme soubor seznam.txt, kde bude seznam všech souborů, pro které budeme chtít počítat počet stažení, v tomto tvaru:
nazev_souboru(string)|pocet_stazeni(int)

Na začátku by to mělo vypadat asi takto:
soubor.pdf|0
soubor1.pdf|0
soubor2.pdf|0


no a po nějakém tom čase takto:
soubor.pdf|1638
soubor1.pdf|590
soubor2.pdf|4472


Je jasné, že budeme pracovat se souborem (číst, zapisovat) soubor.txt, tak musíme nastavit práva na CHMOD 0777.

Nejdříve musíme nějak zjistit, který soubor je stahován. Nejlépe to provedeme tak, že odkaz na stáhnutí souboru bude ve tvaru stahni.php?soubor=nazev_stahovaneho_souboru. Pak už jen z proměnné $_GET["soubor"] zjistíme, o který jde.

Otevřeme si soubor seznam.txt pro čtení a vybereme z něj všechna data. Najdeme řádek, kde je hledaný název souboru a hodnotu za "|" navýšíme o 1. Poté otevřeme soubor pro zápis a uložíme. Žádná věda.
<?php
$file = $_GET["soubor"];
$list = "seznam.txt";
$size = filesize($list) + 1;

$fp = fopen($list, "r");
$content = fread($fp, filesize($list));
$dwn = explode("\n", $content);

$i=0;
$temp = "";

while ($dwn[$i] != ""){
  $tmp = explode ("|", $dwn[$i]);
  
  if ($tmp[0] == $file){
    $tmp[1] += 1;
  }
  
  $tmp[1] .="\n";
  $temp .= implode("|", $tmp);
  $i++;
}

fclose($fp);
$fp = fopen($list, "w+");
fputs($fp, $temp, $size);
fclose($fp);
?>

Na konci řádků nesmí být mezera!

Použití databáze


V první řadě si musíme v databázi vytvořit tabulku downloads a ta bude mít 3 sloupce: id, soubor, pocet. U sloupce id nezapomeňte nastavit auto_increment a primary index. Do ní pak vložíme (co řádek, to soubor) názvy všech souborů a počet stáhnutí nastavíme na nulu. Dále si vytvoříme skript pro připojení k databázi (např.: pripojdb.php).
Opět z proměnné $_GET["soubor"] budeme zjišťovat, o jaký soubor jde. Vyhledáme řádek s tímto souborem a počítadlo navýšíme.

Kompletní skript je zde:
<?php
include "pripojdb.php";

$file = $_GET["soubor"];
$sql = mysql_query("SELECT * FROM downloads WHERE soubor='$file' LIMIT 1");
$data = mysql_fetch_array($sql);
$count = $data["pocet"] + 1;

$sql = mysql_query("UPDATE downloads SET pocet='$count' WHERE soubor='$file' LIMIT 1");
?>

Doufám, že Vám tento článek aspoň trochu pomohl.
Autor: Filip Beran
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Under z IP 90.183.56.*** | 23.2.2010 15:21
u obou dvou způsobů chybí jedna zásadní věc, a to že by php skript měl po provedení započtení předhodit ke stáhnutí uživateli daný soubor...


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel šest a jedenáct