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