Počet stažení pod kontrolou
Někdy potřebujeme znát počet stažení souboru (nebo alespoň klepnutí na odkaz). Jednou z možností je nenabízet soubor ke stažení přímo, ale odkazovat na skript, který nejprve započte jeden přístup (zvýší počítadlo stažení) a teprve poté přesměruje na soubor ke stažení.
Řada prohlížečů po přesměrování na soubor ke stažení zahájí stahování, ale neukáže adresu, odkud se ve skutečnosti stahuje. Pokud do skriptu doplníte kontrolu, zda je skript volán z patřičné stránky, poslouží vám to zároveň jako jednoduchá ochrana, aby mohl kdokoli jiný na své stránce odkazovat na váš soubor ke stažení. Pokud někdo takový odkaz umístí na svou stránku, místo souboru ke stažení je prohlížeč přesměrován na vaši hlavní stránku.
Stahování souboru by bylo možné vyřešit i jinak, než prostým přesměrováním – soubor by posílal sám skript s odesláním vhodných hlaviček. Toto se však hodí pro vyloženě malé soubory (malé obrázky apod.). Pro velké soubory o velikosti několika megabajtů je to nevhodné – zpravidla by doba povolená k běhu skriptu vypršela dříve, než si klient soubor stáhne.
Nejprve si v databázi vytvořte tabulku – v ní pak můžete mít nadefinováno ke stažení souborů kolik chcete. Tabulka s názvem DLOADS bude mít sloupce ID typu shortint s volbou auto_increment, loaded typu integer a path typu varchar(255). Pokud chcete nabízet ke stažení soubory různých typů a z různých adresářů, je nutné následující skript upravit. Ten počítá se stahováním souborů stejného typu z téže složky. Do řádku tabulky pak vkládáte pouze do sloupce LOADED 0 a do sloupce PATH jméno souboru včetně přípony.
Položka ID se naplní sama na číslo o jedna vyšší, než je poslední vložený soubor ke stažení. Hodnotu ID pak použijete v parametru odkazu na skript pro stažení souboru. Jelikož používáte prosté přesměrování na soubor ke stažení, nemůžete pomocí odeslání vhodných hlaviček sdělit prohlížeči, jak se souborem naložit.
Abyste se vyhnuli u klienta namísto zahájení stahování souboru spuštění nějaké aplikace (např. přehrávače záznamů v případě souborů mp3), přejmenujte soubor ke stažení tak, že změníte příponu na nějakou "exotickou" a při stahování souboru upozorníte klienta na nutnost přejmenování po ukončení stahování. Pokud naopak chcete, aby se klientovi řádně spustila jeho přidružená aplikace (např. Windows Media Player, WinAmp, Word nebo Acrobat Reader), důsledně dodržíte správnou příponu souboru určeného ke stažení a informační hlášení o přejmenování souboru nepoužijete.
Skript download.php:
|
Upozorňuji, že součástí ukázkového skriptu není soubor opendb.php, který zajišťuje připojení k databázi pomocí PHP funkcí mysql_connect a mysql_select_db. Jejich použití je k vidění například v článku Jednoduchý internetový obchod v PHP, 1. díl. Na některých serverech není obsah proměnné $HTTP_REFERER korektní. Pokud se skript chová divně, zkuste vynechat v podmínce testování této proměnné – ochrana proti "zcizení" odkazu pak ovšem nebude funkční.
Do stránky pak vložte odkaz na soubor ke stažení. Součástí odkazu je parametr dl určující číslem soubor ke stažení a také ukázka vyskakovacího upozornění o nutnosti přejmenování souboru:
|
Nechcete-li použít změněné přípony souboru, pak v odkazu pro stažení souboru vynechejte celý parametr OnClick. Tabulku databáze lze rozšířit o popisek souboru ke stažení a vytvořit skript, který automaticky vygeneruje stránku se všemi soubory ke stažení, s komentářem a s počtem dosavadních stažení.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024 -
Rychlost serveru: Klíč k lepšímu umístění ve vyhledávačích
7. června 2024 -
Jak nainstalovat šablonu ve WordPressu
23. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024