Fișier de descărcare script PHP cu link-uri temporare

Link-uri temporare la php. Ce este și ce mănâncă? Este foarte simplu. De multe ori, atunci când construcția de orice motor php, există o nevoie de cazare pe site-ul, care va gestiona motorul, link-uri pentru a descărca diverse fișiere cu programe, imagini, template-uri, site-uri, și așa mai departe. N. În cel mai simplu caz, tot ceea ce poate fi prevăzut cu o legătură directă cu arhivele, și plasați arhivele într-un dosar neprotejat al domeniului dvs. Dar acest mod nu este corect. Mai întâi, link-urile către arhive pot fi copiate în alte resurse și le puteți descărca fără a merge chiar pe site-ul dvs. În al doilea rând, datorită faptului că fișierele vor fi plasate într-un dosar neprotejat, acestea pot fi deteriorate sau chiar șterse de atacatori.







Care este mecanismul de formare a legăturilor temporare? Trebuie să creați o bază de date cu două tabele. Primul va fi un nume de fișier unic pentru descărcare la atributele lor - .. extensie, descriere, etc. Într-o altă linie temporară sunt create cu numele de fișiere unice și creând un timp de înregistrare hash aleatoare. Rândurile de-al doilea tabel ar trebui să fie format la trecerea la pagina pentru a descărca fișierul. Și kakraz pe baza celui de al doilea tabel, și va forma link-uri temporare pentru a descărca, care va conține un hash aleatoriu.

php sarcină handler pentru formarea de referință de timp este de a găsi un tabel în al doilea rând cu hash prezent în link-ul și să învețe de la acest id fișier linie pentru a descărca, în care apoi numele bazei de date a arhivei puteți găsi numele fișierului și dă utilizatorului pentru a descărca.

Acest lucru se poate face folosind baza de date MySQL. Dar, în cazul în care baza este un fișier mic, care este mai profitabil de a face acest lucru în fișierele de text simplu, dintre care unul va fi baza din arhivele numele și atributele lor. și un alt container pentru legături temporare. Acest mecanism funcționează pe resursa „electronice de programare web design“ php, html, css pentru amatori și profesioniști în „Șabloane“, care se face pe SMF menționată la articolul despre statisticile de căutare. Să presupunem că avem două fișiere text







// bază de fișiere pentru nume de fișiere
$ nume fișiere = "nume fișiere.dat";
// bază de date pentru linkuri temporare
$ templinks = "templinks.dat";

Prima este o bază de date cu nume de fișiere în care pot exista linii, fiecare dintre ele având înregistrări separate printr-un caracter "|". Este clar că prima intrare în linie este un id unic de fișier, al doilea este descrierea sa, al treilea este numele arhivei

001 | Model de site ultra 77 | templates1.rar
002 | Șablonul site-ului din Open Designs | templates2.rar

Al doilea este un fișier pentru link-urile temporare, care vor fi scrise pe linie. Șirul va conține trei câmpuri separate de același semn „|“, primul - codul unic al fișierului, al doilea - hash aleatoare, iar al treilea - formarea liniei. Ei bine, script-ul înregistrează momentul formării, să o numim ca templinks.php, ar trebui să constea din trei părți. Prima dintre acestea este curățarea fișierului temporar de legătură cu durata de viață expirată. Arata cam asa:

// câte linkuri de stocat (în câteva secunde - 10 minute)
$ hardtime = 600;
// ora curentă în sec
$ currtime = timp ();
// verificați și ștergeți liniile de timp
$ arruniqid = fișier ($ templinks);
$ newarruniqid = array ();
pentru ($ i = 0; $ i // rândurile tabelului unicast temporar. id
lista ($ file_id, $ uniq_id, $ puttime) = exploda ( "|", $ arruniqid [$ i]);
$ difftime = $ currtime - intll ($ puttime);
// dacă timpul liniei curente în limită
dacă ($ difftime <$hardtime)
array_push ($ newarruniqid, "$ file_id | $ uniq_id | $ puttime");
>
// compilați matricea tabelului id temporar
$ newtbdwn = implode ("", $ newarruniqid);
$ fp = $ wf-> fopen ($ templinks, "w");
@fwrite ($ fp, $ newtbdwn);
fclose ($ fp, $ templinks);

Cea de-a doua parte este obținerea liniei de la fișierul de bază al fișierului corespunzător id-ului, care este trecut în linia de solicitare a fișierelor. De exemplu, linia de solicitare a fișierului arată astfel: //. /templinks.php?getlink=001

Partea a treia este o tranziție la linkul temporar generat pentru descărcarea fișierului dorit. Pentru a face acest lucru, trebuie să treacă prin înregistrările bazate pe timp și de a găsi o linie de bază corespunde cu prezența acolo de $ uniq_id la apoi de mers pe jos până la numele fișierului de bază al fișierului în cazul în care pentru a găsi un timp corespunzător găsit în înregistrările bazei de date $ id.

dacă ($ _ GET ['download'])
$ dwn = fișier ($ templinks);
foreach ($ dwn ca $ cheie => $ val)
listă ($ file_id, $ uniq_id, $ puttime) = explode ("|", $ val);
dacă (strstr ($ uniq_id == $ _GET ['download'])
$ id = $ file_id
pauză;
>
>

Acum avem ID-ul fișierului pe care puteți găsi numele fișierului în baza de date namefiles.dat și îl puteți da utilizatorului. Ce am nevoie de fapt.

Să rezumăm. Mecanismul descris vă permite să generați legături cu o durată de viață administrată și un parametru de interogare aleatoriu. Ce dă? Descărcați utilizatorul de fișier dorit poate merge doar la pagina potrivită a site-ului dvs. Nu va fi posibil să descărcați un fișier dintr-un alt domeniu prin linkul generat pe site-ul dvs., deoarece are un timp scurt de existență scurt. Ei bine, în general, aceasta este o modalitate utilă de a salva și de a mări traficul site-ului dvs.







Trimiteți-le prietenilor: