RačunalaTipove datoteka

PHP: file upload na server

Preuzimanje datoteka preko PHP - vrlo zanimljiv slučaj, u kojem se mora pristupiti vrlo pažljivo. možete pronaći na internetu brojni primjeri implementacije upload datoteka, ali ne svi od njih su dobri i zadovoljavaju sigurnosne propise.

Takve stvari treba da dovede do zaključka, čak i ako to traje dugo vremena. Ako ste ostavili prazninu u kodu, a zatim cijeli server može biti ugrožena.

bezbjednost

PHP File Upload na server vrši se vrlo lako. Kod je vrlo kratak i jednostavan. Samo nekoliko linija. Međutim, ova metoda je opasna. Mnogo više vremena i linija koda daleko na sigurno.

Postoji opasnost da, ako to ne učinite inspekcije, svaki napadač može uploadati svoje skripte na serveru. U ovom slučaju, to će imati puni pristup. On može raditi šta hoće:

  • brisanje baze podataka;
  • brisanje datoteka značaja;
  • modificirati datoteke značaja;
  • dodati svoj oglas na Vašu web stranicu;
  • download virusa;
  • preusmjeriti sve korisnike na njihovim stranicama;
  • i mnoge druge stvari koje dolaze na pamet napadača.

Uvek treba da proverite da pokuša da preuzme datoteku za korisnika. Na primjer, ako upload samo slike, potrebno je provjeriti da li je datoteka slika precizno. U suprotnom, vi ćete preuzeti ništa.

Baš kako implementirati verifikaciju, to će biti prikazan, uz direktno skriptu ispitivanje upload datoteke.

Stvaranje PHP oblik

file upload forma je vrlo jednostavna. Nedostaju tipke za pretraživanje dugme i upload.

Opisuje kako stvoriti oblike neće, zato što je lako. Daljnje upute pretpostavljaju da već imate osnovne pojmove HTML (inače ne bi u potrazi za informacijama o preuzimanju na PHP).

Ali imajte na umu da se podaci u obliku trebate dodati enctype atribut.

U suprotnom, neće se prenositi podatke o datoteci rukovatelja.

Kako to treba raditi?

Kada kliknete na gumb za pretraživanje trebali biste vidjeti kutiju u kojoj traži da odaberete datoteku.

Nakon toga će biti potrebno da dobije stazu gdje se nalazi datoteka.

Ako se put ne pojavi, ponovite akciju.

Nakon klika na pretovar preuzimanje datoteka može dati bilo kakvu informaciju.

Na primjer, možete napisati liniju koja kaže da je datoteka "tako i tako", naziv je uspješno postavljeni na "tog i tog" folder. Naravno, ime datoteke će imati uvijek drugačije.

Obično, ove informacije se koriste za debug kod. Tako da je moguće provjeriti da se podaci prenose i pisanje javljaju u željenom direktoriju. To je, čak i ime datoteke nije naznačeno. Od ove dodatne informacije da korisnik ne treba.

Ima smisla za izlaz ime samo ako korisnik preuzme više datoteka. Takav je slučaj, razmislite malo dalje. Da ne žurimo.

podešavanje

U PHP File Upload na server zahtijeva određene postavke, što bi trebalo biti učinjeno u php.ini datoteci. Ova datoteka sadrži puno postavki. Svi oni nam ne treba. Mi smo zainteresirani za tri linije: katalog_ucitavanja_datoteka, upload_tmp_dir i upload_max_filesize.

Imajte na umu da će se ove postavke utjecati na sve svoje sajtove na serveru, a ne samo bilo koji. Stoga, da postavite maksimalnu veličinu temelji se na činjenici da ćete morati učitati korisnika. To se ne preporučuje da postavite prevelik.

Jednom kada promijenite vrijednosti ovih parametara, potrebno je da ponovo server. U suprotnom postavke neće stupiti na snagu, jer su pročitali u trenutku opterećenja servera.

To možete učiniti na konzoli povezivanjem preko SSH na server. Jednostavno unesite naredbu usluga httpd restart, a zatim će se postavke stupiti na snagu.

Još jedna metoda - restart preko ISP-panela ili putem naplate usluga panela.

Array datoteku

U PHP upload datoteka vrši niz $ _FILES. Sadrži sve informacije o datotekama koje smo preuzeli.

Da biste vidjeli koje su informacije sadržane u nizu, što je dovoljno da napiše u rukovatelj datoteku sljedeće.

Odaberite bilo koju datoteku i kliknite na "Upload". Na stranici handler će prikazati informacije koje su pohranjene u $ _FILES. Varijabla je napisano u potpunosti s velikim slovima. PHP - jezik i velika slova.

Kao što vidite, u ovom nizu ima mnogo polja. Svi oni su nam važne. Prvo polje sadrži ime datoteke u obliku u kojem se koristi na vašem računalu.

Kolona tip navedeni tip datoteke. Tmp_name polje odgovara na ime privremene datoteke. Nakon završetka skripta će biti izbrisani.

Polje greška sadrži kôd greške. Ovo je bila malo dalje. Size - veličina u bajtovima.

greške

Obavlja preko upload PHP datoteka je uvijek u pratnji kod greške. Poruka o grešci ušao u "greška". Greška screenshot je nula.

Uzmite u obzir vrijednost svih grešaka:

Rečeno je iznad o parametar koji može biti naveden u uobičajenim HTML.

Ovdje je uzorak obrazac za preuzimanje datoteke, što ukazuje na ograničenje iznosa dodane datoteke.

PHP: file upload skriptu

Kao i svi sprovode u praksi? U PHP upload datoteka javlja kopiju naredbe. Ako ste zainteresirani za pitanje kako da preuzmete datoteku, odgovor je jednostavan kopiranja, koji koristi dva parametra - izvorne datoteke i odredišna datoteka.

Ali, kao što je gore navedeno, ne može biti ograničena iz sigurnosnih razloga. Na primjer, pogledajte kakve datoteke mi brod, možete koristiti tip polja u matrici $ _FILES. Prvo, hajde da se bave inspekcije, a zatim preći na punu skripte

Recimo da želite omogućiti korisnicima da postavite fotografiju sa rezolucijom od samo GIF, JPEG ili PNG. Ukazuju na to može biti ovako.

if ($ _ FILES [ 'FILE_UPLOAD'] [ 'tip']! = "image / gif") {
echo "Žao mi je, podrška samo preuzimanje Gif-Files";
izlaz;
}

Ako želite da šaljemo sve 3 vrste, jednostavno dodati dodatni uslov za drugu vrstu slike.

Kopiranje se radi ovako: kopija (slika 1, slika 2).

U našem slučaju, kada je posao preuzimanja s računala na server, možete to učiniti

kopija ($ _ FILES [ 'FILE_UPLOAD'] [ "tmp_name"], "1.jpg")

To je, datoteka će se kopirati sa imenom 1.jpg. To nije u potpunosti točno. U ovom slučaju, to je samo primjer. Ime datoteke je uvijek potrebno odrediti različite, i odredite produžetak, ovisno o datoteci.

Odredite proširenje može biti na različite načine. Sve ovisi o programer erudicije. Jedan od najbržih načina da se (razlika od desetina sekundi) određuje ekstenzija - ovo je novi kod.

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

$ Ext = $ PATH_INFO [ 'proširenje'];

Varijablu $ u lokal ćemo pohraniti željenu ekstenziju. Naziv datoteke može se postaviti na slučajan pomoću MD5. Ako planirate za preuzimanje mnogo fajlova, bolje je da ih poslati na različite foldere. Tako da će biti više zgodan. Konkretno, ako želite da očisti.

preuzeti kod će biti sljedeći.

/// Sa fotografijom

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

{

echo ( "

Nepoznato datoteke.

Nazad ... ");

izlaz;

}

///. Recite, da ste za bilo koji projekt na serveru je dozvoljeno da učitati velike datoteke (video), ali postoje samo slike, a korisnici moraju da ograniče

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

{

?>

maksimalna dozvoljena veličina 2 MB

Nazad ...

izlaz;

}

// kreiranje foldera

// stvoriti folder u tekućem mjesecu

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

{

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

}

// stvoriti folder u tekućem danu

if (! file_exists ( "img /". datum ( "M"). "/". Datum ( "d")))

{

mkdir ( "img /" datum ( "M") "/" Datum ( "d") ...);

}

/// ekstenziju

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

$ Ext = $ PATH_INFO [ 'proširenje'];

/// generisati filename

$ Id = md5 (datum ( "YMD"));

if (kopija ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /". datum ( "M"). "/". Datum ( "d"). "/". $ id. $ lokal) )

{

echo ( "File uspješno upload");

}

/// daljnje akcije (upis u bazu podataka, i tako dalje. N.)

}

više datoteka

Upload više datoteka (PHP) nastaje putem dodatna polja u formi.

Ova metoda nije vrlo dobar, jer ograničava broj datoteka za preuzimanje. Osim toga, smatra se lošoj formi u programiranju. Pokušajte da učine sve što je dinamičan.

Idealna opcija - to je izbor velikog broja datoteka odjednom pritiskom na jednu tipku.

Da biste to učinili, stvoriti oblik kao što je ovaj kod.

Imajte na umu da više toga te riječi, a ime se daje kao niz []. U ovom slučaju, $ _FILES polje će biti malo drugačija. Ćete dobiti niz niza.

Da bi testirali mogu ponovno koristiti var_dump ($ _ datoteke);

Sve vaše datoteke će biti postavljeni u nizu ovako:

  1. $ _FILES [ "fajl1"] [ "Naziv"] [0]
  2. $ _FILES [ "fajl1"] [ "Naziv"] [1]
  3. I tako dalje.

U zagradama je napisan broj datoteke u nizu. Računajući od nule. Mi ih tretiramo na isti način, samo pitajte ciklus i kontaktiranjem gore opisane kod na kraju indeksa dodavanjem [$ i].

$ I = 0;

while ($ _FILES [ "fajl1"] [ "Naziv"] [$ i] <> '')

{

/// zalijepite gore kod

}

Na taj način, vi ćete morati da se dogodi kroz upload PHP datoteku na server u jednom ciklusu bez nepotrebnog ponavljanja koda, kao što je obično slučaj ako koristite verziju sa statički broj datoteka (prošle fotografija).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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