RačunalaVrste datoteka

File upload na server: PHP

Preuzimanje datoteka putem PHP - vrlo zanimljiv slučaj, na kojem treba pristupiti vrlo pažljivo. Na internetu možete pronaći brojne primjere provedbe prijenos datoteka, ali ne svi od njih su dobri i zadovoljiti sigurnosne propise.

Takve stvari treba dovesti do zaključka, čak i ako to traje dugo vremena. Ako ostavite prazninu u kodu, a zatim vaš cijeli server može biti ugrožena.

sigurnosni

S PHP datoteke upload na server vrši vrlo jednostavno. Kod je vrlo kratak i jednostavan. Samo par redaka. Međutim, ova metoda je opasna. Mnogo više vremena i linija koda daleko na sigurno.

Opasnost je u tome što, ako ne učiniti inspekcija, svaka napadač može postaviti svoje skripte na vašem poslužitelju. U ovom slučaju, to će imati puni pristup. On može raditi što god hoće:

  • brisanje baze podataka;
  • Brisanje datoteka web stranice;
  • mijenjati datoteke stranice;
  • dodati oglas na Vašu web stranicu;
  • preuzeti viruse;
  • preusmjeriti sve korisnike na njihovim web stranicama;
  • i mnoge druge stvari koje dolaze u obzir napadača.

Uvijek biste trebali provjeriti koji pokušava preuzeti datoteku za korisnika. Na primjer, ako prenesete samo slike, potrebno je provjeriti da je datoteka slika točno. Inače, vi će preuzeti sve.

Točno kako provesti provjeru, to će biti prikazan, s izravnim ispita skriptu za upload datoteka.

Stvaranje PHP obrazac

file obrazac za postavljanje je vrlo jednostavan. Nedostaje gumbe gumb Browse i upload.

Opisuje kako stvoriti oblike neće, jer to je lako. Daljnje upute pretpostavljaju da ste već su osnovni koncepti HTML (inače ne biste biti u potrazi za informacijama o preuzimanju na PHP).

No, imajte na umu da su podaci u obrascu morate dodati enctype atribut.

Inače, podaci o datoteci rukovatelj neće prenositi.

Kako to treba raditi?

Kada kliknete na gumb za pretraživanje trebali vidjeti okvir u kojem traži da odaberete datoteku.

Nakon toga će biti potrebno za primanje put na kojem se nalazi datoteka.

Ako put ne pojavi, ponovite postupak.

Nakon što kliknete na preuzimanje datoteka rukovatelj može dati bilo kakve informacije.

Na primjer, možete napisati liniju u kojoj se navodi da je datoteka „tako i tako”, naziv je uspješno prenesena na „tom i tom” mapu. Naravno, ime datoteke će se uvijek drugačiji.

Tipično, ova informacija se koristi za ispravljanje kôda. Tako je moguće provjeriti da se podaci prenose i piše se pojavljuju u željenom direktoriju. To je, čak i naziv datoteke nije naznačeno. Od te dodatne informacije koje korisnik ne treba.

To ima smisla za izlaz ime samo ako iste korisnik preuzima više datoteka. Takav je slučaj, razmislite malo dalje. Nemojmo se ispred sebe.

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žava puno postavki. Svi oni nam ne treba. Mi smo zainteresirani u tri linije: file_uploads, upload_tmp_dir i upload_max_filesize.

Imajte na umu da će ove postavke utječu na sve svoje web stranice na poslužitelju, a ne samo neki. Dakle, postaviti maksimalnu veličinu temelji na činjenici da ćete morati učitati korisnika. Ne preporuča se postaviti prevelika.

Nakon što promijenite vrijednosti u tih parametara, potrebno je ponovo pokrenuti poslužitelj. Inače postavke neće stupiti na snagu, kao što su pročitali u trenutku opterećenja poslužitelja.

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

Drugi način - ponovno pokretanje preko ISP-ploči ili preko davatelja usluga naplate ploče.

Array datoteka

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

Da biste vidjeli koje su informacije sadržane u nizu, dovoljno napisati u datoteci rukovatelj sljedeće.

Odaberite bilo koju datoteku i kliknite na „Upload”. Na stranici rukovatelj će prikazati informacije koja je pohranjena u $ _FILES. Varijabla je napisan u cijelosti tiskanim slovima. PHP - jezik i velika slova.

Kao što možete vidjeti, u ovom polju ima mnogo polja. Svi oni su nam važni. Prvo polje sadrži naziv datoteke u obliku u kojem se koristi na vašem računalu.

Vrsta stupac navedeno vrstu datoteke. Tmp_name polje odgovara ime privremene datoteke. Nakon završetka pisma će biti izbrisani.

Polje greška sadrži kod pogreške. To je malo dalje. Veličina - veličina u bajtovima.

greške

Provodi kroz upload PHP datoteke je uvijek u pratnji koda pogreške. Poruka o pogrešci je ušao u „pogreške”. Pogreška zaslona je nula.

Uzmite u obzir vrijednost svih pogrešaka:

Prije je navedeno o parametru koji se može naveden u uobičajenom HTML-u.

Ovdje je oblik uzorka za preuzimanje datoteke, što ukazuje na granicu od iznosa prenesene datoteke.

PHP: file upload skriptu

Kao sve provodi u praksi? U PHP file upload javlja naredbu kopiranja. Ako ste zainteresirani za pitanje kako to preuzimanje datoteka, odgovor je jednostavan autorskih, koji koristi dva parametra - izvorne datoteke i odredišnu datoteku.

Ali, kao što je gore navedeno, to ne može biti ograničen iz sigurnosnih razloga. Na primjer, provjerite kakav datoteke šaljemo, možete koristiti tip polja u niz $ _FILES. Prvo, neka je se bave inspekcije, a zatim prijeđite na punu skripte

Recimo da želite dopustiti korisnicima da upload fotografija s rezolucijom od samo GIF, JPEG ili PNG. Ukazuju da može biti ovako.

if ($ _ FILES [ 'file_upload'] [ 'tip']! = "image / gif") {
echo "Žao nam je, podržava samo preuzimanje Gif-Files";
izlaz;
}

Ako želite poslati sve 3 vrste, jednostavno dodati dodatni uvjet za drugu vrstu slike.

Kopiranje je učinio ovako: kopija (slika 1, slika 2).

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

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

To je, datoteka će se kopirati s imenom 1.jpg. To nije u potpunosti točno. U ovom slučaju, to je samo jedan primjer. Naziv datoteke je uvijek potrebno odrediti drugačiji, i odrediti proširenje, ovisno o datoteci.

Odredite proširenje može biti na različite načine. To sve ovisi o programer erudicije. Jedan od najbržih načina da (razlika od desetina sekundi) odredila proširenje - to je sljedeći kod.

$ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "ime"]);

Vanjski $ = $ path_info [ 'proširenje'];

Varijabla $ EXT ćemo pohraniti željeni nastavak. Ime datoteke mogu se postaviti na slučajnom pomoću MD5. Ako planirate preuzeti mnogo datoteka, bolje je da ih slati u različite mape. Dakle, to će biti više zgodan. Konkretno, ako želite očistiti.

preuzeti kod će biti kao što slijedi.

/// Uz fotografiju

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

{

echo ( „

Nepoznata datoteka.

Povratak ... „);

izlaz;

}

///. Recimo da za svaki projekt na poslužitelju je dopušteno učitavanje velikih datoteka (video), ali postoje samo slike, a korisnici trebaju ograničiti

if (($ _FILES [ "photo1"] [ "veličina"]> 1024 * 1024 * 2)

{

?>

maksimalna dopuštena veličina 2 MB

Povratak ...

izlaz;

}

// stvarati mape

// stvoriti mapu u tekućem mjesecu

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

{

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

}

// stvoriti mapu trenutnog dana

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

{

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

}

/// ekstenzija datoteke

$ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "ime"]);

Vanjski $ = $ path_info [ 'proširenje'];

/// generiraju datoteke

ID $ = md5 (datum ( "YMd"));

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

{

echo ( "Datoteka je uspješno učitana");

}

/// daljnje djelovanje (ulaz u bazi podataka, i tako dalje. N.)

}

više datoteka

Upload više datoteka (PHP) nastaje pomoću dodatnih polja u obrascu.

Ova metoda nije vrlo dobar, jer to ograničava broj datoteka za download. Štoviše, to se smatra loša forma u programiranju. Pokušajte učiniti sve što je dinamičan.

Idealan izbor - to je izbor veliki broj datoteka odjednom pritiskom na jednu tipku.

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

Imajte na umu da višestrukog dodavanja riječi, a ime je dano kao polje []. U tom slučaju, $ _FILES polje će biti malo drugačiji. Vi ćete dobiti niz polje.

Za testiranje se opet može koristiti var_dump ($ _ datoteke);

Sve datoteke će biti postavljeni u nizu ovako:

  1. $ _FILES [ "file1"] [ "ime"] [0]
  2. $ _FILES [ "file1"] [ "ime"] [1]
  3. I tako dalje.

U zagradi je napisano broj datoteka u nizu. Računajući od nule. Mi ih tretirati na isti način, samo pitajte ciklus i kontaktiranjem gore opisani kôd na kraju indeksa dodavanjem [$ i].

$ I = 0;

a ($ _FILES [ "file1"] [ "ime"] [$ i] <> '')

{

/// zalijepite kod iznad

}

Dakle, morat ćete se dogoditi kroz upload PHP datoteke na poslužitelj u jednom ciklusu bez nepotrebnog ponavljanja koda, kao što je obično slučaj ako koristite inačicu sa statičkim broj datoteka (posljednja fotografija).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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