Link-uri temporare pentru a PHP

Link-uri temporare pentru PHP. Ce este și ce mănâncă?

Link-uri temporare pentru 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 arhivele însele plasate într-un dosar de neprotejat al domeniului. Dar, în acest fel nu este în întregime adevărat. În primul rând, link-uri către fișiere pot fi copiate pe alte resurse, și de a le descărca nici măcar nu poți veni la site-ul tau. Î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 link-uri temporare? Este necesar să se creeze 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 poate fi aranjate 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 link-uri 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







// fișier-bază pentru nume de fișiere
$ Namefiles = "namefiles.dat";
// fișier-bază pentru legături temporare
$ Templinks = "templinks.dat";

Primul - o bază cu nume de fișiere care pot fi linii, fiecare dintre acestea având intrări separate prin „|“. Este clar că prima intrare în linia este ID-ul unic al fișierului, al doilea este descrierea sa, a treia - numele arhivei

001 | 77 Template site ultra | templates1.rar
002 | Template Site de modele deschise | templates2.rar

În al doilea rând - acesta este un fișier pentru legături temporare care urmează să fie scrise într-un șir de caractere. Ș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 înregistrărilor de fișiere temporare, cu o durată de viață a expirat. Se pare ca acest lucru:

// cum se păstrează link-uri (în secunde - 10 minute)
$ Hardtime = 600;
// ora curentă în secunde
$ Currtime = timpul ();
// verifica și curăța liniile temporare
$ Arruniqid = fișier ($ templinks);
$ Newarruniqid = array ();
pentru ($ i = 0; $ i // rânduri de tabelă temporare unice. id
lista ($ file_id, $ uniq_id, $ puttime) = exploda ( "|", $ arruniqid [$ i]);
$ Difftime = $ currtime - intval ($ puttime);
// dacă timpul liniei curente în limita
în cazul în care ($ difftime <$hardtime)
array_push ($ newarruniqid, "$ file_id | $ uniq_id | $ puttime");
>
// crea matrice de tabele temporare id
$ Newtbdwn = implozie ( "", $ newarruniqid);
$ Fp = $ wf-> fopen ($ templinks, "w");
@fwrite ($ fp, $ newtbdwn);
fclose ($ fp, $ templinks);

A treia parte - este de a trece pentru a forma o legătură intermediară de mai sus pentru a descărca fișierul 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.

if ($ _ GET [ 'descarcă'])
$ DWN = fișier ($ templinks);
foreach ($ DWN ca $ cheie => $ val)
lista ($ file_id, $ uniq_id, $ puttime) = exploda ( "|", $ val);
în cazul în care (strstr ($ uniq_id == $ _GET [ 'descarcă'])
$ Id-ul = $ file_id
pauză;
>
>

Acum avem id-ul fișierului pe care îl puteți găsi numele fișierului în namefiles.dat și pentru a oferi utilizatorului. Ceea ce de fapt este necesar.

Pentru a rezuma. Mecanismul descris vă permite să creați legături cu durată de viață controlate și parametru de interogare aleatoare. Ce da? Descărcați fișierul pe care doriți ca utilizatorul poate doar de logare pe pagina corespunzătoare de pe site. Nu va fi capabil de a descărca un fișier dintr-un alt domeniu format pe link-ul de pe site-ul dvs., deoarece are un timp scurt finit de existență. Ei bine, în general, este o modalitate utilă de a păstra și de a crește traficul site-ului.


Adăugarea unui marcaj pentru materialul: