Kompjuters, Tipi ta 'fajls
PHP: fajl upload lill-server
Tniżżil ta 'fajls permezz PHP - każ interessanti ħafna, li għandhom ikunu indirizzati b'attenzjoni kbira. Fuq l-Internet tista 'ssib bosta eżempji ta' l-implimentazzjoni tal-fajl upload, iżda mhux kollha kemm huma tajbin u jissodisfaw ir-regolamenti ta 'sigurtà.
Affarijiet bħal dawn jeħtieġ li jġibu konklużjoni, anki jekk hija tieħu żmien twil. Jekk inti tħalli lakuna fil-kodiċi, allura server kollu tiegħek tista 'tiġi kompromessa.
sigurtà
Ma PHP fajl upload biex titwettaq is-server pjuttost faċilment. Il-kodiċi huwa qasir ħafna u sempliċi. Biss ftit linji. Madankollu, dan il-metodu huwa perikoluż. Ħafna aktar ħin u linji ta 'kodiċi bogħod għas-sigurtà.
Il-periklu huwa li, jekk inti ma tagħmel spezzjonijiet, kull attakkant tista 'upload skripts tagħhom fuq is-server tiegħek. F'dan il-każ, se jkollhom aċċess sħiħ. Huwa jista 'jagħmel kull ma trid:
- tħassar id-database;
- jeskludi siti fajls;
- timmodifika siti fajls;
- żid ad tiegħek għall-website tiegħek;
- download viruses;
- idawwru l-utenti kollha fuq is-siti tagħhom;
- u ħafna affarijiet oħra li jiġu f'moħħna attakkant.
Dejjem għandek tiċċekkja li tentattivi biex tniżżel fajl għall-utent. Per eżempju, jekk inti upload immaġini biss, huwa neċessarju li jiġi vverifikat li l-fajl hija immaġni preċiż. Inkella, inti se tniżżel xejn.
Eżattament kif għandhom jiġu implimentati verifika, se jintwera, bl-iskrittura eżami dirett biex ittella fajls.
Ħolqien ta 'forma PHP
forma upload fajl huwa sempliċi ħafna. Nieqsa l buttuna jibbrawżjaw u upload buttuni.
Tiddeskrivi kif toħloq forom mhux se, għaliex dan huwa faċli. Aktar istruzzjonijiet jassumi li inti diġà għandhom il-kunċetti bażiċi ta 'HTML (inkella inti ma tkunx tkun tfittex informazzjoni dwar tniżżil fuq PHP).
Iżda jinnota li d-data fil-forma ikollok bżonn li jiżdiedu l-attribut enctype.
Inkella, mhux se tiġi trażmessa dejta fil-fajls handler.
Kif għandha taħdem?
Wara li se tkun meħtieġa li jirċievu triq fejn il-fajl tkun allokata.
Jekk il-passaġġ ma jidhirx, twettaq l-azzjoni mill-ġdid.
Wara tikklikkja fuq il-persuna li tieħu ħsieb fajl download jistgħux jagħtu xi informazzjoni.
Per eżempju, inti tista 'tikteb l-linja li tgħid li l-fajl huwa "hekk u hekk" l-isem ikun ġie uploaded b'suċċess għall- "tali u tali" folder. Naturalment, l-isem fajl ser tingħata dejjem differenti.
Tipikament, din l-informazzjoni hija użata għall-kodiċi debug. Għalhekk huwa possibbli li jiġi vverifikat li d-data hija trasmessa u jikteb jseħħu fid-direttorju mixtieqa. Dan huwa, anki l-isem ta 'fajl mhux indikat. Peress li din l-informazzjoni addizzjonali li l-utent ma bżonn.
Jagħmel sens li l-output l-isem biss jekk l-utent downloads fajls multipli. Tali huwa l-każ, jikkunsidraw ftit aktar. Ejja ma jiksbu l quddiem ta 'ruħna.
aġġustament
Fil-PHP fajl upload lill-server teħtieġ ċerti issettjar, li għandu jsir fil-fajl php.ini. Dan il-fajl fih ħafna ta 'settings. Huma kollha ma kellniex bżonn. Aħna huma interessati fi tliet linji: file_uploads, upload_tmp_dir u upload_max_filesize.
Jekk jogħġbok innota li dawn is-settings se jaffettwa kollha ta 'siti tiegħek fuq is-server, mhux biss xi wieħed. Għalhekk, li jistabbilixxi daqs massimu bbażat fuq il-fatt li inti ser ikollok tagħbija utenti. Mhuwiex rakkomandat li jiġu stabbiliti kbar wisq.
Ladarba inti tbiddel il-valuri fl dawn il-parametri, għandek bżonn li terġa 'tibda l-server. Inkella l-settings mhux se tidħol fis-seħħ, peress li taqra fil-ħin tat-tagħbija server.
Tista 'tagħmel dan fil-console permezz tal-konnessjoni permezz SSH għall-server. Sempliċiment jidħlu fil-bidu mill-ġdid httpd servizz kmand, u mbagħad l-settings se jidħlu fis-seħħ.
Metodu ieħor - jistartja matul l-ISP panel jew permezz ta 'fornitur bord ta' kontijiet.
fajl array
Fil-PHP fajl upload isir mill-firxa $ _FILES. Fiha l-informazzjoni kollha dwar il-fajls li aħna tniżżel.
Biex tara liema informazzjoni tinsab fil-firxa, biżżejjed li tikteb fil-handler fajls li ġejjin.
Agħżel kwalunkwe fajl u ikklikkja "Tella." Fuq il-paġna handler se juru l-informazzjoni li hija maħżuna fil $ _FILES. Il-varjabbli huwa miktub kompletament b'ittri kapitali. PHP - a-lingwa sensittiva.
Kif tistgħu taraw, f'dan array għandha ħafna ta 'oqsma. Kollha kemm huma importanti għalina. L-ewwel qasam ikun fih l-isem fajl fil-forma li hija użata fuq il-kompjuter tiegħek.
Il-kolonna tip speċifikat it-tip fajl. Tmp_name qasam tikkorrispondi għall-isem tal-fajl temporanju. Wara t-tmiem tal-iskrittura se jitħassru.
Il-qasam iżball fih kodiċi żball. Dan kien ftit aktar. Daqs - id-daqs fil bytes.
żbalji
Imwettqa permezz tal-upload fajl PHP huwa dejjem akkumpanjata minn kodiċi żball. Messaġġ ta 'żball imdaħħla fir-"żball". L-iżball screenshot huwa żero.
Ikkunsidra l-valur tal-iżbalji kollha:
Hawnhekk hija forma kampjun li tniżżel il-fajl, li jindika limitu tal-ammont tal-fajl uploaded.
PHP: fajl upload b'kitba
Bħala kollha mwettqa fil-prattika? Fil-PHP fajl upload iseħħ kmand kopja. Jekk inti interessat fil-kwistjoni ta 'kif tniżżel fajl, it-tweġiba hija' l-awtur sempliċi, li juża żewġ parametri --fajl sors u l-fajl tad-destinazzjoni.
Iżda, kif intqal hawn fuq, ma jistax ikun limitat għal raġunijiet ta 'sigurtà. Per eżempju, check out liema tip tal-fajl aħna vapur, tista 'tuża t-tip qasam fil-firxa $ _FILES. L-ewwel, ejja jittrattaw ispezzjoni, u mbagħad jimxu fuq l-iskrittura sħiħ
Ejja ngħidu li inti tixtieq li jippermettu lill-utenti biex ittella ritratt b'riżoluzzjoni ta biss GIF, JPEG jew PNG. Indika jista 'jkun bħal dan.
jekk ($ _ FAJLS [ "file_upload"] [ "tip"]! = "image / gif") {
eku "Jiddispjacini, aħna appoġġ biss tniżżil Gif-Fajls";
ħruġ;
}
Jekk inti tixtieq li vapur 3 tipi kollha, sempliċement iżidu kundizzjoni addizzjonali għat-tip ieħor ta 'immaġini.
Ikkupjar isir bħal dan:-kopja (immaġni 1, l-immaġni 2).
Fil-każ tagħna, meta x-xogħol huwa tniżżil mill-PC għal-server, inti tista 'tagħmel hekk
Kopja ($ _ FAJLS [ "file_upload"] [ "tmp_name"], "1.jpg")
Jiġifieri, il-fajl se jiġu kkupjati bl-1.jpg isem. Dan mhux korretta għal kollox. F'dan il-każ, huwa biss eżempju. L-isem fajl huwa dejjem neċessarju li jiġi speċifikat differenti, u jispeċifikaw l-estensjoni, jiddependi fuq il-fajl.
Iddetermina l-estensjoni tista 'tkun modi differenti. Dan kollu jiddependi fuq l-iżviluppatur tal erudition. Wieħed mill-modi iktar mgħaġġel sa (differenza ta 'għexur ta' sekonda) jiddeterminaw l-estensjoni - dan huwa l-kodiċi jmiss.
$ Path_info = pathinfo ($ _ FAJLS [ "photo1"] [ "isem"]);
$ Ext = $ path_info [ "estensjoni"];
Il-varjabbli $ l ext aħna se taħżen l-estensjoni mixtieqa. Isem fajl jista 'jiġi stabbilit għal md5 jużaw addoċċ. Jekk inti tippjana biex tniżżel lott ta 'fajls, huwa aħjar li vapur għall-folders differenti. U għalhekk se jkun aktar konvenjenti. B'mod partikolari, jekk inti tixtieq li jnaddaf.
li tniżżel il-kodiċi se tkun kif ġej.
/// Bil ritratt
jekk ($ _FILES [ "photo1"] [ "tmp_name"] == null)
{
eku ( "
fajl Unknown. strong> p> Lura ... p> "); ħruġ; } ///. Tgħid li inti għal kwalunkwe proġett fuq is-server huwa permess biex jgħabbi fajls kbar (video), iżda hemm biss stampi, u l-utenti għandhom bżonn biex jillimitaw jekk (($ _FILES [ "photo1"] [ "Daqs"]> 1024 * 1024 * 2) { ?> -daqs massimu permess ta ' 2 MB strong> Lura ... p> ħruġ; } // joħolqu folders // toħloq folder tax-xahar kurrenti jekk (! file_exists ( "img /". data ( "M"))) { mkdir ( "img /" data ( "M").); } // toħloq folder tal-ġurnata attwali jekk (! file_exists ( "img /". data ( "M"). "/". data ( "d"))) { mkdir ( "img /" data ( "M") "/" data ( "d") ...); } /// estensjoni fajl $ Path_info = pathinfo ($ _ FAJLS [ "photo1"] [ "isem"]); $ Ext = $ path_info [ "estensjoni"]; /// jiġġeneraw file $ Id = md5 (data ( "YMd")); jekk (kopja ($ _ FAJLS [ "photo1"] [ "tmp_name"], "img /". data ( "M"). "/". data ( "d"). "/". $ id. $ ext) ) { eku ( "File uploaded b'suċċess"); } /// kwalunkwe azzjoni ulterjuri (dħul fid-database, u l-bqija. N.) } Uploading fajls multipli (PHP) ma sseħħ permezz ta 'l-oqsma addizzjonali fil-forma. Dan il-metodu mhuwiex tajjeb ħafna, peress li tillimita n-numru ta 'fajls biex tniżżel. Barra minn hekk, huwa meqjus forma ħażina fil-programmazzjoni. Jipprova jagħmel dinamiku kollox. L-għażla ideali - huwa għażla ta 'numru kbir ta' fajls f'daqqa billi tagħfas buttuna waħda. Biex tagħmel dan, toħloq forma bħal dan il-kodiċi. P> Formola> Innota li ż-żieda multiplu tal-kelma, u l-isem huwa mogħti bħala firxa []. F'dan il-każ, $ _FILES firxa se jkunu xi ftit differenti. Inti ser tirċievi firxa ta 'l-array. Biex tittestja tista 'terġa' tuża l-var_dump ($ _ FAJLS); Fajls kollha tiegħek ser titqiegħed fil-firxa bħal dan: Fil-parentesi huwa miktub numru tal-file fil-firxa. Għadd minn żero. Aħna jittrattawhom bl-istess mod, staqsi iċ-ċiklu u billi jikkuntattjaw lill-kodiċi deskritta hawn fuq fit-tmiem tal-indiċi żżid [$ i]. $ I = 0; filwaqt li ($ _FILES [ "file1"] [ "isem"] [$ i] <> '') { /// paste tal-kodiċi hawn fuq } Għalhekk, ser ikollok li jiġri permezz ta 'fajl PHP upload lill-server f'ċiklu wieħed mingħajr ripetizzjoni bla bżonn tal-kodiċi, kif inhu normalment il-każ jekk inti tuża l-verżjoni ma' numru statika ta 'fajls (l-aħħar ritratt). fajls multipli
Similar articles
Trending Now