Php fájl letöltési parancsfájl, ideiglenes linkekkel

Ideiglenes linkek a php. Mi ez és mit eszik? Nagyon egyszerű. Gyakran, amikor az építőipar minden php motor, szükség van szálláslehetőség a helyszínen, amely kezeli a motort, linkeket letölteni különféle fájlokat programok, képek, sablonok, helyszínek, és így tovább. N. A legegyszerűbb esetben, minden, ami el van látva egy közvetlen link a levéltárak, és helyezze az archívumot a domain védett mappájába. De ez nem teljesen igaz. Először is, az archívumokra mutató hivatkozások átmásolhatók más erőforrásokra, és letöltheti azokat anélkül, hogy a webhelyére is belépne. Másodszor, annak a ténynek köszönhetően, hogy a fájlok védett mappába kerülnek, károsodhatnak vagy akár behatolók is törölhetik őket.

Mi a mechanizmus az ideiglenes kapcsolatok kialakításához? Két táblával kell létrehoznia egy adatbázist. Az első egy egyedi fájlnevek a letöltés tulajdonságaikat - .. Extension, leírás, stb Egy másik ideiglenes összhangban egyedi fájlnevek jönnek létre, valamint egy véletlen hash felvételi időt. A második táblázat sorai a fájl letöltéséhez szükséges oldalak létrehozásakor keletkeznek. A második táblázat alapján ideiglenes letöltési linkek alakulnak ki, amelyek véletlen hash-t tartalmaznak.

php kezelő feladata a kialakulását az idő hivatkozás található egy táblázat, a második sorban a hash jelen a kapcsolat és tanulni ezt a sort id fájlt letölteni, amelyben akkor az adatbázis az archívum nevének megtalálja a fájl nevét, és adja meg, hogy a felhasználó letölt.

Ezt a MySQL adatbázis segítségével lehet elvégezni. De ha a fájl alapja kicsi, akkor előnyösebb a hagyományos szövegfájlokban, amelyek közül az egyik az archívum nevének és attribútumainak alapja. és egy másik konténer az ideiglenes kapcsolatokhoz. Ez a mechanizmus működik a forrás „Electronics programozás Web design” php, html, css amatőrök és a szakemberek a „sablonok”, amely készült a CMS említett cikket a keresési statisztikáit. Tegyük fel, hogy két szöveges fájlunk van

// fájl-alap fájlnevekhez
$ namefiles = "namefiles.dat";
// fájl-alap ideiglenes linkekhez
$ templinks = "templinks.dat";

Az első egy olyan adatbázis, amelynek fájlneveket tartalmaz, amelyekben lehetnek olyan sorok, amelyek mindegyike "|" karakterrel elválasztott rekordokkal rendelkezik. Nyilvánvaló, hogy a sorban az első bejegyzés egy egyedi fájlazonosító, a második a leírása, a harmadik pedig az archívum neve

001 | Site ultra 77 | templates1.rar sablonja
002 | Az Open Designs sablont tartalmazó sablonja sablon2.rar

A második az ideiglenes linkekhez tartozó fájl, amelyet a sorra írunk. A karakterlánc három 'azonos' karakterrel elválasztott mezőt tartalmaz, az első egy egyedi idézőazonosító, a második véletlenszerű hash, a harmadik a sor létrehozásának ideje. Nos, az ideiglenes linkek létrehozására szolgáló script, például templinks.php, három részből áll. Az első ezek közül az ideiglenes linkfájl tisztítása a lejárt élettartammal. Úgy néz ki, mint ez:

// hány link tárolása (másodpercben - 10 perc)
$ hardtime = 600;
// aktuális idő másodpercben
$ currtime = time ();
// ellenőrizze és törölje az idővonalakat
$ arruniqid = fájl ($ templinks);
$ newarruniqid = array ();
for ($ i = 0; $ i // az ideiglenes unicast táblázat sorai. id
lista ($ file_id, $ uniq_id, $ puttime) = robbanás ("|", $ arruniqid [$ i]);
$ difftime = $ currtime - intval ($ puttime);
// ha az aktuális vonal ideje a határban van
ha ($ difftime <$hardtime)
array_push ($ newarruniqid, "$ file_id | $ uniq_id | $ puttime");
>
// összeállítja az ideiglenes id táblázat mátrixát
$ newtbdwn = implode ("", $ newarruniqid);
$ fp = $ wf-> fopen ($ templinks, "w");
@fwrite ($ fp, $ newtbdwn);
fclose ($ fp, $ templinks);

A második rész a fájlnév alapfájlból az azonosítónak felel meg, amelyet a fájl kérelem sorában továbbít. Például a fájl kérési sorja így néz ki: //. /templinks.php?getlink=001

A harmadik rész átmenet a létrehozott ideiglenes linkre a kívánt fájl letöltéséhez. Ehhez meg kell, hogy menjen át az időalapú nyilvántartások és talál egy alapvonal megfelel a jelenléte a $ uniq_id hogy aztán odalépett az alap fájlnevet a fájl hol talál egy megfelelő időpontban az adatbázisban talált feljegyzések $ id.

ha ($ _ GET ['download'])
$ dwn = fájl ($ templinks);
foreach ($ dwn $ kulcs => $ val)
lista ($ file_id, $ uniq_id, $ puttime) = felrobban ("|", $ val);
ha (strstr ($ uniq_id == $ _GET ['letöltés'])
$ id = $ fájl_id
break;
>
>

Most megvan a fájl azonosítója, amelyen megtalálható a fájl neve az adatbázisban, namefiles.dat és adja meg a felhasználót. Amire valóban szükségünk volt.

Összefoglaljuk. A leírt mechanizmus lehetővé teszi a linkek létrehozását egy kezelt élettartammal és egy véletlenszerű lekérdezési paraméterrel. Mit nyújt? Töltse le a kívánt fájlt felhasználó csak a webhely jobb oldalára léphet. Nem lehet letölteni egy fájlt egy másik domainről a webhelyen létrehozott linken, mivel véges rövid létezési ideje van. Nos, ez általában hasznos módja a webhely forgalmának megtakarításában és növelésében.