KompjuteraLloje file

PHP: fotografi ngarkoni në server

Shkarkimit të skedarëve nëpërmjet PHP - një rast shumë interesante, të cilat duhet të trajtohet me shumë kujdes. Në internet ju mund të gjeni shembuj të shumtë të zbatimit të skedarit upload, por jo të gjitha prej tyre janë të mira dhe për të përmbushur rregullat e sigurisë.

Gjëra të tilla duhet të sjellë në një përfundim, edhe nëse kjo merr një kohë të gjatë. Nëse ju lënë një boshllëk në kodin, pastaj të gjithë serveri juaj mund të rrezikohet.

siguri

Me PHP fotografi ngarkoni në server është kryer mjaft lehtë. Kodi është shumë e shkurtër dhe e thjeshtë. Vetëm një çift i linjave. Megjithatë, kjo metodë është e rrezikshme. Shumë më shumë kohë dhe rreshta të kodit larg për sigurinë.

Rreziku është se, në qoftë se ju nuk e bëni inspektime, asnjë sulmues mund të ngarkoni skenaret e tyre në serverin tuaj. Në këtë rast, ajo do të ketë qasje të plotë. Ai mund të bëjë çfarëdo që ai dëshiron:

  • fshini bazën e të dhënave;
  • fshini fotografi faqet;
  • modifikoj fotografi faqet;
  • Vendos shpalljen tuaj në faqen tuaj te internetit;
  • shkarko viruseve;
  • përcjellim të gjithë përdoruesit në faqet e tyre;
  • dhe shumë gjëra të tjera që vijnë në mendje sulmues.

Ju gjithmonë duhet të kontrolloni se përpjekjet për të shkarkuar një skedar për përdoruesit. Për shembull, në qoftë se ju të ngarkoni imazhe vetëm, është e nevojshme për të verifikuar se dosja është një imazh të saktë. Përndryshe, ju do të shkarkoni asgjë.

Saktësisht se si për të zbatuar verifikimit, ajo do të tregohet, me shkrimin e drejtpërdrejtë provimit të ngarkoni fotografi.

Krijimi i një formë PHP

fotografi formulari i dhënies është shumë e thjeshtë. Missing butonin Browse dhe ngarkoni butonat.

Përshkruan se si për të krijuar forma nuk do, sepse është e lehtë. udhëzime të mëtejshme të supozojmë se ju tashmë keni konceptet themelore të HTML (përndryshe ju nuk do të jetë në kërkim për informacion në lidhje me shkarkimin në PHP).

Por vini re se të dhënat në formë ju duhet të shtoni atribut enctype.

Përndryshe, të dhënat në dosjen mbajtës nuk do të transmetohet.

Si duhet të punojnë?

Kur ju klikoni në butonin Browse ju duhet të shihni një kuti ku kërkohet të zgjidhni një skedar.

Pas kësaj ajo do të jetë e nevojshme për të marrë një rrugë ku dosja është e vendosur.

Nëse rruga nuk shfaqet, kryen veprimin përsëri.

Pas klikuar mbi file shkarkuar mbajtës mund të japin ndonjë informacion.

Për shembull, ju mund të shkruani vijën që thotë se dosja është "kështu dhe kështu" emri ka qenë i ngarkuar me sukses në dosje "të tilla dhe të tilla". Natyrisht, emri i skedarit do të jepet gjithmonë të ndryshme.

Në mënyrë tipike, ky informacion është përdorur për kodin debug. Kështu është e mundur për të verifikuar se të dhënat është transmetuar dhe shkruan ndodhin në directory dëshiruar. Kjo është, edhe emri i file nuk është treguar. Që këtë informacion shtesë që përdoruesi nuk ka nevojë.

Kjo ka kuptim për dalje emrin vetëm në qoftë se përdoruesi shkarkime fotografi të shumta. I tillë është rasti, e konsiderojnë një pak më tej. Le të mos e marrë përpara veten.

rregullim

Në PHP fotografi ngarkoni në server kërkon parametrat e caktuara, të cilat duhet të bëhet në dosjen php.ini. Kjo skedë përmban një shumë të settings. Ata të gjithë ne nuk kemi nevojë. Ne jemi të interesuar në tri linja: e ngarkimeve të skedave, upload_tmp_dir dhe upload_max_filesize.

Ju lutem vini re që këto settings do të ndikojë në të gjitha faqet tuaja në server, jo vetëm çdo një. Prandaj, për të vendosur madhësinë maksimale bazuar në faktin se ju do të keni për të ngarkuar përdoruesit. Nuk është e rekomanduar për të vendosur shumë të mëdha.

Pasi ju të ndryshojë vlerat në këto parametra, ju duhet të rinisni server. Përndryshe cilësimet nuk do të hyjë në fuqi, pasi ata lexojnë në kohën e ngarkesës server.

Ju mund ta bëni këtë në tastierë me lidh nëpërmjet SSH në server. Thjesht shkruani e shërbimit command httpd restart, dhe pastaj settings do të hyjë në fuqi.

Një tjetër metodë - një restart përmes ISP-panel ose me ofruesin panel faturimit.

fotografi array

Në PHP fotografi upload është bërë nga array $ _FILES. Ai përmban të gjitha informatat në lidhje me dosjet që shkarkoni.

Për të parë se çfarë informacioni është i përfshirë në rrjet, të mjaftueshme për të shkruar në dosjen mbajtës në vijim.

Zgjidhni ndonjë fotografi dhe klikoni "Ngarko". Në faqen mbajtës do të shfaq informacionin që është ruajtur në $ _FILES. Variabli është shkruar tërësisht me shkronja të mëdha. PHP - një gjuhë të ndjeshme.

Siç mund ta shikoni, në këtë grup ka një shumë të fushave. Të gjithë ata janë të rëndësishme për ne. Fusha e parë që përmban emrin e file në formën në të cilën është përdorur në kompjuterin tuaj.

Kolona lloj specifikuar lloj file. Tmp_name fushë korrespondon me emrin e file të përkohshëm. Pas përfundimit të shkrimit do të fshihen.

Fusha Gabim përmban një kod gabimi. Kjo ishte pak më tej. Size - madhësia në bytes.

gabime

Kryhet nëpërmjet skedar PHP upload shoqërohet gjithmonë nga një kod gabimi. Një mesazh gabimi hyrë në "gabim". Gabimi screenshot është zero.

Konsiderojnë vlerën e të gjitha gabimet:

Ai u tha më lart në lidhje me parametër që mund të specifikohet në zakonshme HTML.

Këtu është një formë mostër për të shkarkuar skedarin, e cila tregon një limit të shumës së file ngarkuar.

PHP: fotografi upload script

Si të gjitha të kryera në praktikë? Në PHP fotografi upload ndodh komandën kopje. Nëse jeni të interesuar në pyetjen se si për të shkarkuar një skedar, përgjigja është e thjeshtë copy-, e cila përdor dy parametra - file burim dhe dosjen e destinacionit.

Por, siç u tha më lart, ajo nuk mund të jetë i kufizuar për arsye sigurie. Për shembull, shikoni se çfarë lloj të dosjes ne anije, ju mund të përdorni llojin fushë në array $ _FILES. Së pari, le të merren me inspektimin, dhe pastaj të kalojnë në shkrimin e plotë

Le të thonë se ju doni për të lejuar përdoruesit të ngarkoj një foto me një rezolucion prej vetëm GIF, JPEG ose PNG. Tregoni ajo mund të jetë si kjo.

në qoftë se ($ _ DOSJET [ 'file_upload'] [ 'type']! = "image / gif") {
echo "Na vjen keq, ne mbështesim vetëm shkarkimit Gif-Files";
dalje;
}

Nëse ju doni për të transportuar të gjitha 3 lloje, thjesht shtoni një kusht shtesë për lloj tjetër të imazhit.

Kopjimi është bërë si ky: kopje (imazhit 1, imazhit 2).

Në rastin tonë, kur puna është e shkarkimit nga PC në server, ju mund ta bëni këtë

kopje ($ _ DOSJET [ 'file_upload'] [ 'tmp_name "]," 1.jpg ")

Kjo është, dosja do të kopjohet me emrin 1.jpg. Kjo nuk është plotësisht e saktë. Në këtë rast, ajo është vetëm një shembull. Emri i skedarit është gjithmonë e nevojshme për të specifikuar të ndryshme, dhe të përcaktojë shtrirjen, në varësi të file.

Përcaktoni zgjerimi mund të jetë mënyra të ndryshme. E gjitha varet nga zhvilluesi i dituri. Një nga mënyrat më të shpejtë në (një diferencë prej dhjetat e sekondave) të përcaktojë zgjerimin - ky është kodi tjetër.

$ Path_info = pathinfo ($ _ DOSJET [ 'Foto1'] [ "emër"]);

$ Ext = $ path_info [ 'zgjatje'];

Variabli $ ext ne do të ruajë zgjerimin e dëshiruar. Një emër skedari mund të vendosen në të rastit duke përdorur MD5. Nëse keni ndërmend për të shkarkuar një shumë e dosjeve, është më mirë për të transportuar ato në dosje të ndryshme. Pra, kjo do të jetë më i përshtatshëm. Në veçanti, në qoftë se ju doni të pastroj.

për të shkarkuar kodin do të jetë si më poshtë.

/// me foto

në qoftë se ($ _FILES [ 'Foto1'] [ 'tmp_name'] == null)

{

echo ( "

skedë Unknown.

Kthehu ... ");

dalje;

}

///. të themi për çdo projekt në server është e lejuar për të ngarkuar fotografi të mëdha (Video), por ka vetëm fotografi, dhe përdoruesit duhet të kufizojnë

në qoftë se (($ _FILES [ "Foto1"] [ "Madhësia"]> 1024 * 1024 * 2)

{

?>

maksimumi i lejuar madhësia e 2 MB

Kthehu ...

dalje;

}

// krijoni dosje

// krijoni një dosje të muajit aktual

në qoftë se (! file_exists ( "IMG /". date ( "M")))

{

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

}

// krijoni një dosje të ditën e tanishme

në qoftë se (! file_exists ( "IMG /". date ( "M"). "/". date ( "d")))

{

mkdir ( "IMG /" date ( "M") "/" date ( "d") ...);

}

/// file extension

$ Path_info = pathinfo ($ _ DOSJET [ 'Foto1'] [ "emër"]);

$ Ext = $ path_info [ 'zgjatje'];

/// gjeneruar filename

$ Id = MD5 (data ( "YMd"));

në qoftë se (kopje ($ _ DOSJET [ 'Foto1'] [ 'tmp_name "]," IMG / ". date (" M ")." / ". date (" d ")." / ". $ id. $ ext) )

{

echo ( "Skedari i ngarkuar me sukses");

}

/// çdo veprim të mëtejshëm (hyrja në bazën e të dhënave, dhe kështu me radhë. N.)

}

fotografi të shumta

Ngarkimi fotografi të shumta (PHP) ndodh me anë të fushave të tjera në formë.

Kjo metodë nuk është shumë e mirë, pasi ajo kufizon numrin e dosjeve të shkarkoni. Për më tepër, ajo është konsideruar formë e keqe në programimin. Të përpiqet të bëjë gjithçka dinamike.

Mundësia e ideal - kjo është një zgjedhje e një numri të madh të dosjeve në të njëjtën kohë duke shtypur një buton të vetëm.

Për ta bërë këtë, të krijojë një formë si ky kod.

Vini re se shtimin e shumëfishtë të fjalës, dhe emri i është dhënë si një grup []. Në këtë rast, $ _FILES array do të jetë pak më të ndryshme. Ju do të merrni një grup të vektorit.

Për të testuar mund të përdorë përsëri var_dump ($ _ fotografi);

Të gjitha dosjet tuaja do të vendoset në grup si kjo:

  1. $ _FILES [ "file1"] [ "emër"] [0]
  2. $ _FILES [ "file1"] [ "emër"] [1]
  3. Dhe kështu me radhë.

Në kllapa është shkruar numrin e dosjes në rrjet. Llogaritur nga zero. Ne i trajtojmë ato në të njëjtën mënyrë, thjesht pyesni ciklin dhe duke kontaktuar kodin e përshkruar më sipër në fund të shtuar indeksit [$ i].

$ I = 0;

ndërsa ($ _FILES [ "file1"] [ "emër"] [$ i] <> '')

{

/// paste kodin e mësipërm

}

Kështu, ju do të duhet të ndodhë përmes një Ngarkoni fotografi PHP në server në një cikël pa përsëritjen e panevojshme të kodit, siç ndodh zakonisht në qoftë se ju përdorni versionin me një numër statike të dosjeve (foto e kaluar).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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