TietokoneetTiedostotyypit

PHP: tiedostojen lataaminen palvelimelle

Tiedostojen lataaminen kautta PHP - erittäin mielenkiintoinen tapaus, johon on suhtauduttava hyvin huolellisesti. Internetissä löytyy lukuisia esimerkkejä täytäntöönpanon latauskiintiö, mutta eivät kaikki niistä ovat hyviä ja turvallisuusmääräysten mukaisia.

Tällaiset asiat täytyy saattaa päätökseen, vaikka se kestää kauan. Jos jättää aukon koodin, niin koko palvelin voi vaarantua.

turvallisuus

PHP -tiedosto ladata palvelimelle tapahtuu melko helposti. Koodi on hyvin lyhyt ja yksinkertainen. Vain pari riviä. Kuitenkin tämä menetelmä on vaarallista. Paljon aikaa ja riviä koodia pois turvaan.

Vaarana on, että jos et tee tarkastuksia, hyökkääjä voi ladata skriptejä palvelimella. Tässä tapauksessa se on täysi pääsy. Hän voi tehdä mitä hän haluaa:

  • poistaa tietokannan;
  • poistaa tiedostoja sivustot;
  • muokata tiedostoja sivustot;
  • lisätä mainoksen verkkosivuilla,
  • ladata virukset;
  • ohjata kaikki käyttäjät sivustoissa;
  • ja monia muita asioita, jotka tulevat mieleen hyökkääjälle.

Tarkista aina, joka yrittää ladata tiedoston käyttäjälle. Jos esimerkiksi lataat vain kuvat, on syytä tarkistaa, että tiedosto on kuva tarkasti. Muuten sinun ladata mitään.

Täsmälleen miten toteuttaa todentaminen, se näkyy, jossa suora koepaperinsa ladata tiedostoja.

Luominen PHP lomakkeiden

lataaminen muoto on hyvin yksinkertainen. Puuttuvat selauspainiketta ja lataa painikkeet.

Kerrotaan, miten luoda lomakkeita ei, koska se on helppo. Lisäksi ohjeissa oletetaan, että sinulla on jo peruskäsitteet HTML (muuten ei olisi etsivät tietoa ladata PHP).

Mutta huomaa, että tiedot muodossa sinun täytyy lisätä enctype määrite.

Muuten tiedot tiedostonkäsittelijän ei lähetetä.

Miten sen pitäisi toimia?

Kun klikkaat selauspainiketta pitäisi näkyä ruutu jossa pyydetään valitsemaan tiedostoon.

Sen jälkeen se on velvollinen vastaanottamaan polku, jossa tiedosto sijaitsee.

Jos polku ei näy, suorita toiminto uudelleen.

Klikattuasi ladatun tiedoston käsittelijä voi antaa mitään tietoja.

Esimerkiksi voit kirjoittaa linja, joka toteaa, että tiedosto on "niin ja niin" nimi on onnistuneesti ladattu "se ja se" kansioon. Tietenkin tiedostonimi annetaan aina erilainen.

Yleensä tämä tieto käytetään debug koodia. Näin on mahdollista varmistaa, että data lähetetään ja kirjoituksia läsnä halutussa hakemistossa. Eli jopa tiedostonimi ei ole ilmoitettu. Koska tämä lisätietoja joita käyttäjä ei tarvitse.

On järkevää lähtöön nimi vain, jos käyttäjä lataa useita tiedostoja. Tästä on kyse, harkitse vähän kauemmas. Älkäämme mennä asioiden edelle.

säätö

PHP tiedostojen lataaminen palvelimelle vaatii tiettyjä asetuksia, jotka tulee tehdä php.ini tiedostoon. Tämä tiedosto sisältää paljon asetuksia. He kaikki emme tarvitse. Olemme kiinnostuneita kolme riviä: file_uploads, upload_tmp_dir ja upload_max_filesize.

Huomaa, että nämä asetukset vaikuttavat kaikkien sivustojen palvelimelle, eikä vain jokin. Siksi asettaa enimmäiskoko perustuu siihen, että sinun täytyy ladata käyttäjille. Se ei ole suositeltavaa asettaa liian suuria.

Kun muutat arvoja Näiden parametrien, sinun täytyy käynnistää palvelimelle. Muuten asetukset eivät tule voimaan, koska he lukevat aikaan Palvelimen kuorman.

Voit tehdä tämän konsolin liittämällä SSH palvelimeen. Syötä komento palvelun httpd uudelleenkäynnistyksen, minkä jälkeen asetukset tulevat voimaan.

Toinen tapa - uudelleenkäynnistyksen ISP-paneelin tai laskuissa paneelin tarjoaja.

array tiedosto

PHP tiedostojen lataaminen tapahtuu array $ _FILES. Se sisältää kaikki tiedot tiedostojen lataamisesta.

Tarkistaa, mitä tietoja sisältyy jono, niin kirjoittaa tiedostonkäsittelijän seuraavat.

Valita minkä tahansa tiedoston ja klikkaa "Lataa". Ohjaajaa sivulla näytetään tietoja, jotka on tallennettu $ _FILES. Muuttuja on kirjoitettu kokonaan isoilla kirjaimilla. PHP - kielen herkkä.

Kuten näette, tässä array on paljon kenttiä. Kaikki ne ovat meille tärkeitä. Ensimmäinen kenttä sisältää tiedostonimen siinä muodossa, jossa sitä käytetään tietokoneessa.

Tyyppi-sarakkeessa määritetyn tiedostotyypin. Tmp_name kenttä vastaa nimi tilapäinen tiedosto. Päätyttyä käsikirjoituksen poistetaan.

Virheen kenttä sisältää virhekoodin. Tämä oli hieman pidemmälle. Koko - koko tavuina.

virheitä

Toteutetaan PHP arkistoida upload on aina liitettävä virhekoodi. Virheilmoitus merkitään "virhe". Varjostin virhe on nolla.

Arvo huomioon kaikkia virheitä:

Se edellä on sanottu parametri, joka voidaan määrittää tavallisella HTML.

Tässä on esimerkki muoto ladata tiedosto, joka osoittaa raja määrän ladatun tiedoston.

PHP: tiedostojen lataaminen skripti

Kuten kaikki käytännössä toteutetaan? PHP tiedostojen lataaminen tapahtuu kopiointikomentoa. Jos olet kiinnostunut kysymyksen siitä, miten ladata tiedoston, vastaus on yksinkertainen kopio-, joka käyttää kahta parametrit - lähdetiedoston ja kohdetiedosto.

Mutta kuten edellä on todettu, se ei voi olla rajoitettu turvallisuussyistä. Esimerkiksi tarkistaa minkälainen tiedosto me alus, voit käyttää kentän tyyppiä array $ _FILES. Ensimmäinen, nyt käsitellä tarkastus, ja sitten siirtyä koko skriptin

Sanotaan haluat, että käyttäjät voivat ladata valokuvan, jonka resoluutio on vain GIF, JPEG tai PNG. Osoittavat se voi olla näin.

if ($ _ FILES [ 'file_upload'] [ 'tyyppi']! = "image / gif") {
echo "Anteeksi, tukee vain lataamalla Gif-tiedostot";
exit;
}

Jos haluat lähettää kaikki 3 tyyppiä, lisää lisäehto muille kuvatyypin.

Kopiointi tapahtuu näin: kopioi (kuva 1, kuva 2).

Meidän tapauksessamme, kun työ on ladattavissa PC palvelimelle, voit tehdä sen

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

Eli tiedosto kopioidaan nimen 1.jpg. Tämä ei ole täysin oikea. Tässä tapauksessa se on vain esimerkki. Tiedoston nimi on aina tarpeen täsmentää eri, ja määritä laajennus, tiedostosta riippuen.

Laajenemisen määrittämiseksi voi olla eri tavoin. Se kaikki riippuu kehittäjä oppineisuus. Yksi nopeimmista tavoista (ero sekunnin kymmenyksiä) määrittää jatke - tämä on seuraava koodi.

$ PATH_INFO = pathinfo ($ _ FILES [ 'kuva1'] [ "nimi"]);

$ Ext = $ PATH_INFO [ 'laajennus'];

Muuttuja $ ext säilytämme alaliittymä. Tiedoston nimi voidaan asettaa satunnaisesti MD5. Jos aiot ladata paljon tiedostoja, on parempi lähettää ne eri kansioihin. Joten se on helpompaa. Varsinkin jos haluat tyhjentää.

ladata koodia on seuraavanlainen.

/// Photo

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

{

echo ( "

Tuntematon tiedostotyyppi.

Takaisin ... ");

exit;

}

///. Sano missään projektissa palvelimelle saa ladata suuria tiedostoja (video), mutta vain kuvia, ja käyttäjien tarvitse rajoittaa

if (($ _FILES [ "kuva1"] [ "koko"]> 1024 * 1024 * 2)

{

?>

Enimmäiskokoa 2 MB

Takaisin ...

exit;

}

// luoda kansioita

// luoda kansion kuluvan kuukauden

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

{

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

}

// luoda kansion kuluvan päivän

if (! file_exists ( "img /". date ( "M"). "/". date ( "D")))

{

mkdir ( "img /" date ( "M") "/" date ( "D") ...);

}

/// tiedostopääte

$ PATH_INFO = pathinfo ($ _ FILES [ 'kuva1'] [ "nimi"]);

$ Ext = $ PATH_INFO [ 'laajennus'];

/// tuottaa tiedostonimi

$ Id = md5 (päivämäärä ( "VKP"));

jos (kopio ($ _ FILES [ 'kuva1'] [ "tmp_name"], "img /". date ( "M"). "/". date ( "D"). "/". $ id. $ ext) )

{

echo ( "tiedosto onnistuneesti ladattu");

}

/// muita toimenpiteitä (rekisteröitävä tietokantaan, ja niin edelleen. N.)

}

useita tiedostoja

Lataaminen useita tiedostoja (PHP) tapahtuu avulla lisäkenttiä muodossa.

Tämä menetelmä ei ole kovin hyvä, koska se rajoittaa määrää ladattavia tiedostoja. Lisäksi pidetään epäkohteliasta ohjelmoinnissa. Yrittävät tehdä jotakin dynaamista.

Ihanteellinen vaihtoehto - se on valinta useita tiedostoja kerralla painamalla yhtä nappia.

Voit tehdä tämän luomalla muoto näin koodia.

Huomaa, että useita lisättäessä sana, ja nimi annetaan joukko []. Tällöin $ _FILES array on hieman erilainen. Saat erilaisia jono.

Testaamaan voi taas käyttää var_dump ($ _ tiedostot);

Kaikki tiedostot sijoitetaan array näin:

  1. $ _FILES [ "tdsto1"] [ "name"] [0]
  2. $ _FILES [ "tdsto1"] [ "name"] [1]
  3. Ja niin edelleen.

Suluissa on kirjoitettu tiedoston numeron jono. Laskien nollaan. Käsittelemme niitä samalla tavalla, kysykää sykli ja ottamalla yhteyttä edellä kuvattua koodin lopussa indeksin lisääminen [$ i].

$ I = 0;

while ($ _FILES [ "tdsto1"] [ "name"] [$ i] <> '')

{

/// liitä edellä koodi

}

Näin sinun täytyy tapahtua PHP tiedostojen lataaminen palvelimelle yhdessä syklissä ilman turhaa toistoa koodin, kuten yleensä tapahtuu, jos käytät versiota staattinen tiedostojen määrä (viimeinen kuva).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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