RačunalnikiVrste datotek

Nalaganje datotek na strežnik: PHP

Prenos datotek preko PHP - zelo zanimivo zadevo, na katero je treba lotiti zelo previdno. Na internetu lahko najdete številne primere izvajanja nalaganja datotek, vendar ne vsi od njih so dobri in izpolnjujejo varnostne predpise.

Takšne stvari je treba, da bi do zaključka, tudi če to traja dlje časa. Če pustite vrzel v kodo, nato pa lahko celoten strežnik ogrožena.

varnost

Z PHP datoteke naložiti na strežnik izvede zelo preprosto. Koda je zelo kratek in preprost. Samo nekaj vrstic. Vendar pa ta metoda je nevarno. Veliko več časa in vrstic kode proč na varno.

Nevarnost je, da, če ne boste storili preglede, lahko vsak napadalec naložite svoje skripte na strežniku. V tem primeru, bo imel popoln dostop. Lahko naredi, kar hoče:

  • zbrisati zbirko;
  • brisanje datotek mest;
  • spreminjanje datotek mest;
  • dodaj oglas na vaši spletni strani;
  • prenos virusov;
  • preusmeri vse uporabnike na njihovih spletnih straneh;
  • in še veliko drugih stvari, ki pridejo na misel napadalca.

Vedno preverite, da poskuša prenesti datoteko za uporabnika. Na primer, če ste le nalaganje slik, je treba preveriti, ali je datoteka slika natančno. V nasprotnem primeru boste prenesete karkoli.

Točno kako izvajati preverjanja, bo to prikazano, z neposrednim scenarij pregledu za nalaganje datotek.

Ustvarjanje obrazca za PHP

datoteka oblika upload je zelo preprosta. Manjka gumbe gumb Prebrskaj in nalaganje.

Opisuje, kako ustvariti oblike ne bo, ker je to enostavno. Nadaljnja navodila Predvidevam, da ste že v osnovni koncepti HTML (sicer ne bi iskali informacije o prenosu na PHP).

Vendar ugotavlja, da so podatki v obliki, morate dodati atribut atribut enctype.

V nasprotnem primeru ne bodo posredovani podatki o datoteki trener.

Kako naj bi to delovalo?

Ko boste kliknili na gumb za brskanje boste videli polje, v katerem prosili, da izberete datoteko.

Po tem, da bodo morali prejeti pot, kjer se nahaja datoteka.

Če pot ne pojavi, ponovite dejanje.

Po kliku na vodnika datoteke za prenos more dati nobenih informacij.

Na primer, lahko napišete na črto, ki navaja, da je datoteka "tako in tako" ime je bilo uspešno naložili na "tak in tak" mapo. Seveda, bo ime datoteke treba vedno drugačen.

Značilno je, da se te informacije uporablja za iskanje napak kode. Tako je možno, da se preveri, da se podatki posredujejo in piše pojavijo v želenem imeniku. To pomeni, da je tudi ime datoteke ni navedeno. Od teh dodatnih informacij, da uporabnik ne potrebuje.

Smiselno je, da izhod ime samo, če ga uporabnik prenese več datotek. Tak je primer, razmisli malo naprej. Naj ne dobijo pred sebe.

prilagoditev

V PHP datoteke naložite na strežnik zahteva določene nastavitve, ki jih je treba storiti v datoteki php.ini. Ta datoteka vsebuje veliko nastavitev. Vsi ne potrebujemo. Zainteresirani smo v treh vrsticah: file_uploads, upload_tmp_dir in upload_max_filesize.

Prosimo, upoštevajte, da se bodo te nastavitve vplivajo na vse vaše strani na strežniku, ne samo na enega. Zato, da nastavite največjo velikost, ki temelji na dejstvu, da se boste morali naložiti uporabnikom. To ni priporočljivo, da prevelika.

Ko spremenite vrednosti v teh parametrih, morate znova zagnati strežnik. V nasprotnem primeru nastavitev ne bo začela veljati, kot berejo v času obremenitve strežnika.

To lahko storite v konzoli s povezavo preko SSH na strežniku. Preprosto vnesite httpd ponovni zagon ukaza storitev, nato pa se bodo nastavitve začnejo veljati.

Druga metoda - ponovni zagon skozi ISP-plošče ali prek ponudnika za obračun plošče.

Array datoteka

V PHP je nalaganje datotek opravi array $ _FILES. Vsebuje vse informacije o datotekah, ki jih prenesete.

Da bi videli, katere informacije je v matriki, dovolj pisati v vodnika datoteke sledi.

Izberite datoteke in kliknite "Naloži". Na strani trener bo prikazal podatke, ki so shranjeni v $ _FILES. Spremenljivka je v celoti napisan z velikimi črkami. PHP - jezik občutljiv.

Kot lahko vidite, v tej matriki ima veliko področjih. Vsi izmed njih so za nas pomembne. Prvo polje vsebuje ime datoteke v obliki, v kateri se uporablja na vašem računalniku.

V stolpcu Vrsta določeno vrsto datoteke. Tmp_name polje se ujema z imenom začasne datoteke. Po koncu scenarija bodo izbrisani.

Polje napaka vsebuje kodo napake. To je bilo še malo. Velikost - velikost v bajtih.

napake

Izvaja preko upload PHP datoteke vedno spremlja kodo napake. Sporočilo o napaki vnesti v "napake". Ta napaka zaslona je nič.

Razmislite vrednost vseh napak:

Rečeno je bilo, predvsem zaradi parameter, ki se lahko določen v običajnem HTML.

Tukaj je vzorec obrazca za prenos datoteke, ki označuje mejo zneska naložene datoteke.

PHP: file upload scenarij

Kot vse izvajajo v praksi? V PHP file upload pojavi ukaz za kopiranje. Če ste zainteresirani za vprašanje, kako prenesti datoteke, je odgovor preprost avtorsko, ki uporablja dva parametra - izvorno datoteko in ciljno datoteko.

Toda, kot je navedeno zgoraj, to ne more biti omejeno zaradi varnostnih razlogov. Na primer, preverite, kakšne datoteke smo ladjo, lahko uporabite vrsto polja v matriki $ _FILES. Najprej se ukvarjajo z inšpekcijskim pregledom, nato pa na celoten scenarij

Recimo, da želite, da se omogoči uporabnikom, da naložite fotografijo z ločljivostjo samo GIF, JPEG ali PNG. Kažejo, da je lahko tako.

če ($ _ datotek [ 'file_upload'] [ 'tip']! = "image / gif") {
echo "Žal mi je, da podpiramo samo prenos GIF-datotek";
izhod;
}

Če želite poslati vse 3 vrste, preprosto dodate dodaten pogoj za drugo vrsto slike.

Kopiranje poteka takole: kopija (slika 1, Slika 2).

V našem primeru, ko je delo, prenos iz računalnika na strežnik, lahko to storite

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

To pomeni, da datoteka se kopira z imenom 1.jpg. To ni povsem pravilna. V tem primeru, je le primer. Ime datoteke je vedno potrebno navesti drugačen, in določite končnico, je odvisno od datoteke.

Ugotovite razširitev lahko različne načine. Vse je odvisno od razvijalca učenosti. Eden od najhitrejših načinov za (razliko desetink sekunde), določi podaljšanje - to je naslednja številka.

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

$ Zunanji = $ path_info [ 'razširitev'];

Spremenljivka $ EXT bomo shranili želeno končnico. Ime datoteke lahko nastavite naključno uporabo MD5. Če nameravate prenesti veliko datotek, je bolje, da jih ladja za različne mape. Tako bo bolj priročno. Še posebej, če želite, da se očisti.

prenesti kodo bo takole.

/// S fotografijo

če ($ _FILES [ 'photo1'] [ 'tmp_name'] == nič)

{

echo ( "

Neznana datoteka.

Nazaj ... ");

izhod;

}

///. Pravite, da za vsak projekt na strežniku je dovoljeno naložiti velikih datotek (video), vendar pa so samo slike, uporabniki pa morajo omejiti

če (($ _FILES [ "photo1"] [ "velikost"]> 1024 * 1024 * 2)

{

?>

Največja dovoljena velikost 2 MB

Nazaj ...

izhod;

}

// ustvariti mape

// ustvariti mapo v tekočem mesecu

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

{

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

}

// ustvariti mapo trenutni dan

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

{

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

}

/// razširitev datoteke

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

$ Zunanji = $ path_info [ 'razširitev'];

/// ustvari ime datoteke

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

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

{

echo ( "Datoteka je bila uspešno naložena");

}

/// nadaljnje ukrepanje (vpis v bazo podatkov, in tako naprej. N.)

}

več datotek

Nalaganje več datotek (PHP), se pojavi s pomočjo dodatnih polj v obliki.

Ta metoda ni zelo dobra, saj omejuje število datotek za download. Poleg tega se zdi slaba oblika v programiranju. Poskusite storiti vse, kar dinamično.

Idealna možnost - to je izbira velikega števila datotek, hkrati s pritiskom na en sam gumb.

Če želite to narediti, ustvariti obliko, kot to oznako.

Upoštevajte, da se večkratno dodatkom besede in ime je podan kot matrika []. V tem primeru bo $ _FILES matrika nekoliko drugačna. Boste dobili niz array.

Če želite preizkusiti ponovno uporabo var_dump ($ _ FILES);

Vse datoteke bo postavljena v matriki, kot je ta:

  1. $ _FILES [ "datoteka1"] [ "ime"] [0]
  2. $ _FILES [ "datoteka1"] [ "ime"] [1]
  3. In tako naprej.

V oklepaju je napisano številko spisa v matriki. Štetje od nič. Mi jih obravnava na enak način, le vprašajte cikel in v stik z zgoraj opisano kodo na koncu indeksa dodajanje [$ i].

$ I = 0;

medtem ($ _FILES [ "datoteka1"] [ "name"] [$ i] <> '')

{

/// prilepi zgornjo kodo

}

Tako boste morali, da se zgodi s upload PHP datoteke na strežniku v enem ciklu brez nepotrebnega ponavljanja kode, kot je običajno v primeru, če uporabljate različico s statično število datotek (zadnja fotografija).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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