CalculatoareTipuri de fișiere

Fișier de încărcare la server: PHP

Descărcarea fișierelor prin intermediul PHP - un caz foarte interesant, la care trebuie să fie abordată foarte atent. Pe internet puteți găsi numeroase exemple de punere în aplicare a fișier de încărcare, dar nu toate dintre ele sunt bune și să îndeplinească reglementările de siguranță.

Astfel de lucruri trebuie să aducă la o concluzie, chiar dacă este nevoie de o lungă perioadă de timp. Dacă lăsați un decalaj în codul, atunci întregul server poate fi compromisă.

siguranță

Cu PHP fișier de încărcare pe server se realizează destul de ușor. Codul este foarte scurt și simplu. Doar câteva linii. Cu toate acestea, această metodă este periculoasă. Mult mai mult timp și linii de cod departe de siguranță.

Pericolul este că, dacă nu faci inspecții, orice atacator ar putea încărca script-urile lor pe server. În acest caz, va avea acces deplin. El poate face tot ce vrea el:

  • șterge baza de date;
  • șterge site-uri de fișiere;
  • modificați site-uri de fișiere;
  • adăugați anunțul site-ul dumneavoastră;
  • descărca viruși;
  • redirecționa toți utilizatorii de pe site-urile lor;
  • și multe alte lucruri care vin în minte atacator.

Trebuie să verificați întotdeauna că încearcă să descarce un fișier pentru utilizator. De exemplu, dacă încărcați numai imagini, este necesar să se verifice dacă fișierul este o imagine cu precizie. În caz contrar, se va descărca nimic.

Exact cum să pună în aplicare de verificare, va fi prezentat, cu script-ul de examinare directă pentru a încărca fișiere.

Crearea unui formular PHP

Formularul de încărcare fișier este foarte simplu. Lipsesc butoanele butonul Browse și încărcați.

Descrie modul de a crea formulare nu va, pentru că este ușor. Alte instrucțiuni presupun că aveți deja conceptele de bază ale HTML (altfel nu ar fi în căutarea de informații cu privire la descărcarea de pe PHP).

Dar, rețineți că datele din formularul de care aveți nevoie să adăugați atributul enctype.

În caz contrar, nu va fi transmis date privind handler dosar.

Cum ar trebui să funcționeze?

Când faceți clic pe butonul Browse ar trebui să vedeți o casetă în care a cerut să aleagă un fișier.

După aceea va fi necesar pentru a primi o cale în care se află fișierul.

În cazul în care calea nu apare, efectuați din nou acțiunea.

După ce faceți clic pe handler de descărcare fișier poate da orice informație.

De exemplu, puteți scrie linia care precizează că fișierul este „așa și așa“, numele a fost încărcat cu succes în dosarul „cutare și cutare“. Desigur, numele fișierului va fi dat întotdeauna diferite.

De obicei, aceste informații sunt folosite pentru a depana cod. Astfel, este posibil să se verifice dacă datele sunt transmise și scrie apar în directorul dorit. Aceasta este, chiar și numele de fișier nu este indicat. Deoarece aceste informații suplimentare pe care utilizatorul nu are nevoie.

Este logic să ieșire numele numai dacă utilizatorul descarcă mai multe fișiere. Acesta este cazul, ia în considerare un pic mai departe. Să nu ne pripim.

ajustare

În PHP fișier de încărcare pentru serverul necesită anumite setări, care ar trebui să fie realizată în fișierul php.ini. Acest fișier conține o mulțime de setări. Ei tot nu avem nevoie. Suntem interesati de trei linii: file_uploads, upload_tmp_dir și upload_max_filesize.

Vă rugăm să rețineți că aceste setări vor afecta toate site-urile de pe server, nu orice unul. Prin urmare, pentru a seta dimensiunea maximă bazată pe faptul că va trebui să încărcați utilizatori. Nu este recomandat să setați prea mare.

După ce modificați valorile acestor parametri, trebuie să reporniți serverul. În caz contrar, setările nu vor intra în vigoare, așa cum au citit la momentul incarcarea serverului.

Puteți face acest lucru în consola prin conectarea prin SSH la server. Pur și simplu introduceți httpd restarta serviciul de comandă, iar apoi setările vor intra în vigoare.

O altă metodă - o repornire prin ISP-panel sau prin intermediul furnizorului de panoul de facturare.

fișier Array

În PHP fișier de încărcare se face de matrice $ _FILES. Acesta conține toate informațiile despre fișierele pe care le descărcăm.

Pentru a vedea ce informații sunt conținute în matrice, suficient pentru a scrie în handler fișierul următor.

Selectați orice fișier și faceți clic pe „Încărcați“. Pe pagina handler va afișa informațiile care sunt stocate în $ _FILES. Variabila este scris în întregime cu majuscule. PHP - un limbaj sensibil.

După cum puteți vedea, în această matrice are o mulțime de domenii. Toate acestea sunt importante pentru noi. Primul câmp conține numele de fișier în forma în care acesta este utilizat pe computer.

Coloana de tip specificat tip de fișier. Tmp_name câmp corespunde cu numele fișierului temporar. După sfârșitul script-ul va fi șters.

Câmpul de eroare conține un cod de eroare. Acesta a fost un pic mai departe. Size - dimensiunea în octeți.

erori

Realizarea prin încărcarea de fișiere PHP este întotdeauna însoțit de un cod de eroare. Un mesaj de eroare a intrat în „eroare“. Eroarea captură de ecran este zero.

Luați în considerare valoarea tuturor erorilor:

Acesta a fost spus mai sus despre parametru care poate fi specificat în HTML obișnuit.

Aici este o formă de probă pentru a descărca fișierul, ceea ce indică o limită a sumei fișierului încărcat.

PHP: fișier script de încărcare

Ca toate realizate în practică? În PHP fișier de încărcare are loc comanda de copiere. Dacă sunteți interesat de întrebarea cum de a descărca un fișier, răspunsul este simplu la copiere, care utilizează doi parametri - fișierul sursă și fișierul de destinație.

Dar, așa cum sa menționat mai sus, aceasta nu poate fi limitat din motive de siguranță. De exemplu, a verifica ce fel de fișier am navei, puteți utiliza tipul de câmp în matrice $ _FILES. În primul rând, să se ocupe de inspecție, și apoi trece la script-ul completă

Să presupunem că doriți să permiteți utilizatorilor să încarce o fotografie cu o rezoluție de numai GIF, JPEG sau PNG. Indicați poate fi așa.

if ($ _ FILES [ 'file_upload'] [ 'tip']! = "image / gif") {
echo "Ne pare rău, acceptăm numai descărcarea Gif-Files";
ieșire;
}

Dacă doriți să expediați toate cele 3 tipuri, pur și simplu adăugați o condiție suplimentară pentru celălalt tip de imagine.

Copierea se face astfel: copie (imaginea 1, imaginea 2).

În cazul nostru, atunci când lucrarea este descărcarea de pe PC-ul la server, puteți face acest lucru

copie ($ _ FILES [ 'file_upload'] [ "tmp_name"], "1.jpg")

Adică, fișierul va fi copiat cu numele 1.jpg. Acest lucru nu este în întregime corectă. În acest caz, acesta este doar un exemplu. Numele fișierului este întotdeauna necesar să se specifice diferite, și specificați extensia, în funcție de fișier.

Se determină extensia poate fi moduri diferite. Totul depinde de dezvoltator erudiției. Una dintre cele mai rapide moduri de a (o diferență de zecimi de secunde) determină extinderea - acesta este codul următor.

$ PATH_INFO = PathInfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'extensie'];

Variabila $ ext vom păstra extensia dorită. Un nume de fișier poate fi setat la întâmplare folosind MD5. Dacă aveți de gând pentru a descărca o mulțime de fișiere, este mai bine să le expedieze în diferite dosare. Deci, va fi mai convenabil. În special, dacă doriți să purge.

pentru a descărca codul va fi după cum urmează.

/// Cu fotografie

if ($ _FILES [ 'photo1'] [ 'tmp_name'] == null)

{

echo ( „

fișier necunoscut.

Înapoi ... „);

ieșire;

}

///. Tu spui pentru orice proiect pe server este permis pentru a încărca fișiere de dimensiuni mari (video), dar sunt doar imagini, iar utilizatorii trebuie să se limiteze

if (($ _FILES [ "photo1"] [ "size"]> 1024 * 1024 * 2)

{

?>

dimensiunea maximă permisă de 2 MB

Înapoi ...

ieșire;

}

// crea dosare

// a crea un dosar al lunii curente

if (! file_exists ( "img /". Data ( "M")))

{

mkdir ( "img /" data ( "M").);

}

// a crea un dosar al zilei curente

if (! file_exists ( "img /". Data ( "M"). "/". data ( "d")))

{

mkdir ( "img /" data ( "M") "/" data ( "d") ...);

}

/// extensie de fișier

$ PATH_INFO = PathInfo ($ _ FILES [ 'photo1'] [ "name"]);

$ Ext = $ PATH_INFO [ 'extensie'];

/// genera nume de fișier

$ Id = MD5 (data ( "ALZ"));

în cazul în care (copie ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". Data ( "M"). "/". data ( "d"). "/". $ id. $ ext) )

{

echo ( "Fișierul a fost încărcat cu succes");

}

/// orice acțiune suplimentară (intrare în baza de date, și așa mai departe. N.)

}

mai multe fișiere

Se încarcă mai multe fișiere (PHP) are loc prin intermediul unor câmpuri suplimentare în formă.

Această metodă nu este foarte bun, deoarece limitează numărul de fișiere pentru a descărca. Mai mult decât atât, se consideră forma rău în programare. Încearcă să facă totul dinamic.

Opțiunea ideală - este o alegere a unui număr mare de fișiere simultan prin apăsarea unui singur buton.

Pentru a face acest lucru, creați o formă ca acest cod.

Rețineți că adăugarea multiplă a cuvântului, iar numele este dat ca o matrice []. În acest caz, $ _FILES matrice va fi ușor diferite. Vei primi o serie de matrice.

Pentru a testa poate utiliza din nou var_dump ($ _ FILES);

Toate fișierele vor fi plasate în matrice ca aceasta:

  1. $ _FILES [ "fișier1"] [ "nume"] [0]
  2. $ _FILES [ "fișier1"] [ "nume"] [1]
  3. Și așa mai departe.

În paranteze este scris numărul de fișier în matrice. Numărarea de la zero. Noi le trateze în același mod, doar cere ciclul și prin contactarea codul descris mai sus, la sfârșitul indicelui adăugând [$ i].

$ I = 0;

în timp ce ($ _FILES [ "fișier1"] [ "name"] [$ i] <> '')

{

/// inserați codul de mai sus

}

Astfel, va trebui să se întâmple printr-o încărcare de fișiere PHP pe server într-un singur ciclu, fără repetarea inutilă a codului, așa cum se întâmplă de obicei dacă utilizați versiunea cu un număr de fișiere statice (ultima fotografie).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ro.birmiss.com. Theme powered by WordPress.