DatoriFailu tipi

PHP: failu augšupielādes ar serveri

lejupielādējot failus, izmantojot PHP - ļoti interesants gadījums, uz kuru ir jārisina ļoti uzmanīgi. Internetā jūs varat atrast daudzus piemērus īstenošanas failu augšupielādes, bet ne visi no tiem ir labi un atbilst drošības noteikumiem.

Šādas lietas ir nepieciešams, lai pie secinājuma, pat tad, ja tas aizņem ilgu laiku. Ja jūs atstāt atstarpi kodu, tad visa jūsu serveri var būt apdraudēta.

drošība

Ar PHP failu augšupielādēt uz serveri tiek veikta diezgan viegli. Kods ir ļoti īss un vienkāršs. Tikai pāris līnijām. Tomēr šī metode ir bīstami. Daudz vairāk laika un rindas koda prom uz drošību.

Pastāv risks, ka, ja jums nav darīt pārbaudes, kāds uzbrucējs varētu augšupielādēt savus skriptus uz jūsu serveri. Šajā gadījumā tas būs pilna piekļuve. Viņš var darīt visu, ko viņš vēlas:

  • dzēst datu bāzi;
  • dzēst failus vietām;
  • modificēt failus vietām;
  • pievienot savu reklāmu savā mājas lapā;
  • download vīrusus;
  • novirzīt visus lietotājus uz viņu vietnēm;
  • un daudzas citas lietas, kas nāk prātā, uzbrucēju.

Jums vienmēr vajadzētu pārbaudīt, kas mēģina lejupielādēt failu lietotājam. Piemēram, ja jūs augšupielādēt tikai attēlu, tas ir nepieciešams, lai pārliecinātos, ka fails ir attēls precīzi. Pretējā gadījumā jums būs lejupielādēt jebko.

Tieši tā, kā īstenot pārbaudi, tas tiks parādīts, ar tiešu pārbaudes skriptu augšupielādēt failus.

Izveidojot PHP formu

failu augšupielādes forma ir ļoti vienkārši. Trūkst uz pogas Pārlūkot un augšupielādes pogas.

Aprakstīts, kā izveidot formas nebūs, jo tas ir viegli. Turpmākās instrukcijas pieņemsim, ka jums jau ir pamatjēdzieni HTML (pretējā gadījumā jums nebūs meklē informāciju par lejupielādi uz PHP).

Bet ņemiet vērā, ka dati, kas izpaužas jums ir nepieciešams, lai pievienotu enctype atribūtu.

Pretējā gadījumā dati par failu apdarinātājs netiks nosūtīta.

Kā tas būtu jāstrādā?

Kad noklikšķināt uz pogas Pārlūkot, jums vajadzētu redzēt lodziņu, kurā lūgts izvēlēties failu.

Pēc tam tas būs nepieciešams, lai saņemtu ceļu, kur fails atrodas.

Ja ceļš neparādās, vēlreiz veiciet šo darbību.

Pēc noklikšķināšanas uz lejupielādējamā faila apdarinātājs var sniegt jebkādu informāciju.

Piemēram, jūs varat rakstīt līniju, kurā teikts, ka fails ir "tik un tā" nosaukums ir veiksmīgi augšupielādēts "tādā un tādā" mapē. Protams, faila nosaukums tiks dots vienmēr atšķiras.

Raksturīgi, ka šī informācija tiek izmantota, lai atkļūdošanas kodu. Līdz ar to ir iespējams pārbaudīt, ka dati tiek nosūtīti un raksta notiek vēlamajā direktorijā. Tas nozīmē, ka pat faila nosaukums nav norādīts. Tā kā šo papildu informāciju, lietotājam nav nepieciešams.

Tas ir jēga, lai izvadītu nosaukumu tikai tad, ja lietotājs lejupielādē vairākus failus. Šāds ir gadījums, uzskata, ka nedaudz tālāk. Let 's nav get priekšā sevi.

koriģēšana

PHP failu augšupielādes ar serveri ir nepieciešams noteiktus iestatījumus, kas būtu darīts php.ini failā. Šis fails satur daudz iestatījumus. Viņi visi mums nav vajadzīga. Mēs esam ieinteresēti trijās līnijās: file_uploads, upload_tmp_dir un upload_max_filesize.

Lūdzu, ievērojiet, ka šie iestatījumi ietekmēs visas jūsu vietnes uz servera, nevis tikai kādu. Tāpēc, lai noteiktu maksimālo lielumu, pamatojoties uz to, ka jums būs ielādēt lietotāju. Tas nav ieteicams uzstādīt pārāk lielas.

Kad jūs mainīt vērtības šajos parametros, jums ir nepieciešams restartēt serveri. Pretējā iestatījumi nebūs spēkā, jo viņi lasa brīdī servera slodzi.

Jūs varat izdarīt konsolē, savienojot caur SSH serverim. Vienkārši ievadiet komandu pakalpojumu httpd restart, un tad iestatījumi stāsies spēkā.

Vēl viena metode - restart caur ISP-panelī vai ar norēķinu panelis sniedzējs.

Array fails

PHP failu augšupielādes tiek darīts ar masīvu $ _FILES. Tas satur visu informāciju par failiem, ko mēs lejupielādēt.

Lai redzētu, kāda informācija ir ietverta masīvs, pietiekami rakstīt failu apdarinātājs pēc.

Izvēlieties jebkuru failu un noklikšķiniet uz "Augšupielādēt". Uz apdarinātājs lapā parādīs informāciju, kas tiek glabāta $ _FILES. Mainīgais ir uzrakstīts pilnīgi ar lielajiem burtiem. PHP - valoda jutīga.

Kā jūs varat redzēt, šajā masīvā ir daudz laukus. Visi no tiem ir svarīgi, lai mums. Pirmajā laukā faila nosaukumu formā, kādā tā tiek izmantota datorā.

Tipa kolonna norādīts faila tipu. Tmp_name lauks atbilst nosaukumam pagaidu failu. Pēc beigām skripts tiks dzēsti.

Kļūda laukā kļūdas kodu. Tas bija mazliet tālāk. Izmērs - lielums baitos.

kļūdas

Veikta izmantojot PHP failu augšupielādes vienmēr pavada kļūdas kodu. Kļūdas ziņojums ieraksta "kļūda". Ekrānuzņēmums kļūda ir nulle.

Apsveriet vērtību visām kļūdām:

Tas tika teikts iepriekš par parametru, kas var tikt norādīts parastajā HTML.

Šeit ir veidlapas paraugs, lai lejupielādētu failu, kas norāda ierobežojumu apmēru augšupielādēto failu.

PHP: failu augšupielādes skripts

Kā visi veikta praksē? PHP failu augšupielādes notiek kopiju komandu. Ja jūs interesē jautājums par to, kā lejupielādēt failu, atbilde ir vienkārša autortiesībām, kas izmanto divus parametrus - avota failu un galamērķa failu.

Taču, kā minēts iepriekš, tas nevar būt ierobežota drošības apsvērumu dēļ. Piemēram, pārbaudiet, kāda veida lietas, mēs kuģis, jūs varat izmantot lauka tipu masīvā $ _FILES. Pirmkārt, pieņemsim galā ar pārbaudi, un pēc tam pāriet uz pilnu skriptu

Pieņemsim, ka jūs vēlaties, lai ļautu lietotājiem augšupielādēt foto ar izšķirtspēju tikai GIF, JPEG vai PNG. Norādiet tas var būt, piemēram, šis.

if ($ _ FILES [ 'file_upload'] [ 'tipa']! = "image / gif") {
echo "Atvainojiet, mēs atbalstīti tikai lejupielādējot GIF Files";
izeja;
}

Ja vēlaties nosūtīt visus 3 veidu, vienkārši pievienot papildu nosacījums, lai cita veida attēlu.

Kopēšanas tiek darīts, piemēram, šādi: kopija (attēls 1, attēls 2).

Mūsu gadījumā, ja darbs tiek lejupielādējot no datora uz serveri, jūs varat darīt

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

Tas nozīmē, ka fails tiks kopēts ar nosaukumu 1.jpg. Tas nav pilnīgi pareizs. Šajā gadījumā, tas ir tikai piemērs. Faila nosaukums vienmēr ir jāprecizē dažādi, un norādiet paplašināšanu, atkarībā no faila.

Noteikt paplašinājums var būt dažādi veidi. Tas viss ir atkarīgs no izstrādātāju erudīciju. Viens no ātrākajiem veidiem, kā (starpību desmitdaļām sekundes) noteiktu paplašinājumu - tas ir nākamais kodu.

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

$ Ext = $ path_info [ 'paplašinājums'];

Mainīgais $ EXT mēs glabāsim vēlamo pagarinājumu. Failu nosaukumu var noteikt izlases izmantojot MD5. Ja jūs plānojat, lai lejupielādētu daudz failu, tas ir labāk, lai nosūtīt tos dažādās mapēs. Tātad tā būs ērtāk. It īpaši, ja jūs vēlaties tīru.

lejupielādēt kods būs šādi.

/// Ar foto

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

{

echo ( "

Nezināms faila.

Atpakaļ ... ");

izeja;

}

///. Say jums jebkuram projektam serverī ir atļauts ielādēt lielus failus (video), bet ir tikai bildes, un lietotājiem ir nepieciešams, lai ierobežotu

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

{

?>

maksimālais atļautais izmērs no 2 MB

Back ...

izeja;

}

// izveidot mapes

// izveidot mapi tekošā mēneša

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

{

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

}

// izveidotu mapi pašreizējās dienas

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

{

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

}

/// faila paplašinājums

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

$ Ext = $ path_info [ 'paplašinājums'];

/// radīt faila

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

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

{

echo ( "fails ir veiksmīgi augšupielādēts");

}

/// papildu darbības (ierakstu datu bāzē, un tā tālāk. N.)

}

vairākus failus

Augšupielādējot vairākus failus (PHP) notiek, izmantojot papildu laukus formā.

Šī metode nav ļoti labi, jo tas ierobežo skaitu failu lejupielādei. Turklāt, tas tiek uzskatīts par sliktu formu programmēšanā. Mēģināt darīt visu dinamisku.

Ideāls variants - tā ir izvēle lielu skaitu failus uzreiz, nospiežot vienu pogu.

Lai to izdarītu, izveidojiet formu, piemēram, šo kodu.

Ņemiet vērā, ka vairāku pievienojot vārdu, un nosaukums ir dots kā masīvs []. Šajā gadījumā, $ _FILES masīvs būs nedaudz atšķirīga. Jūs saņemsiet masīvs masīva.

Lai pārbaudītu, var atkārtoti izmantot var_dump ($ _ failus);

Visi jūsu faili tiks ievietoti masīvā, piemēram, šādi:

  1. $ _FILES [ "file1"] [ "nosaukums"] [0]
  2. $ _FILES [ "file1"] [ "nosaukums"] [1]
  3. Un tā tālāk.

Iekavās ir rakstīts faila numuru masīvā. Skaitot no nulles. Mēs izturamies pret viņiem tādā pašā veidā, vienkārši lūgt ciklu un, sazinoties ar iepriekš aprakstīto kodu beigās indeksa pievienošana [$ i].

$ I = 0;

bet ($ _FILES [ "file1"] [ "nosaukums"] [$ i] <> '')

{

/// ielīmēt iepriekš kods

}

Tādējādi, jums būs notikt, izmantojot PHP failu augšupielādes ar serveri vienā ciklā, bez nevajadzīgas atkārtošanās no koda, kā tas parasti notiek, ja jūs izmantojat versiju ar statisku failu skaitu (pēdējā foto).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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