DOUG LLOYD: Weithiau pan fyddwn ni'n rhaglennu
ydym yn gwneud pethau mor gyffredin, felly yn aml, ac felly mae llawer o bobl
gwneud yr un idea-- neu'r un peth, fod ganddi enw.
MVC yn union un fath beth.
Mae'n cael ei alw patrwm rhaglennu.
Mae'n fath o hoffi arferion gorau sydd wedi cael eu distyllu i lawr
gan bobl sy'n ceisio gwneud rhywbeth.
Yn yr achos hwn, gweithredu system o dudalennau
bod defnyddiwr yn rhyngweithio â ar wefan mwy cymhleth.
Ac mae'n gwneud hynny yn gyffredin bod mae'n argymell fel safon
y gallai pobl eraill yn hoffi eu dilyn, ac mae 'na set benodol iawn o ffyrdd
Gallai fod un ddilyn patrwm hwn.
>> Felly, MVC yn batrwm, a'r rheswm rydym yn ei ddefnyddio yw i fanylion haniaethol i ffwrdd
oddi wrth y defnyddiwr.
Mae rhai pethau y defnyddiwr Nid oes gwir angen i weld.
Maent yn unig am gael profiad y defnyddiwr da,
ac nid oes angen i ni eu cael gael gafael ar bob un ffeil sy'n
yn bodoli ar ein gweinydd gwe, efallai.
Efallai y bydd rhai ffeiliau sydd yr un a ddefnyddir i gryfhau profiad y defnyddiwr,
ac felly y gallwn haniaethol rhai i ffwrdd.
Gallwn fath o guddio iddynt fel ni all y defnyddiwr yn gweithio gyda nhw,
ond mae ein pages-- ein pages-- yn gwybod sut i ddelio â nhw
ac yn eu galw neu efallai ei gwneud yn ofynnol, nhw, neu rywbeth fel 'na eisiau.
>> Y prif gymhelliad am MVC yw diogelwch data,
gan fod MVC fel arfer yn dod i fyny yn y cyd-destun o weithio gyda chronfeydd data.
Ac yn arbennig i ni eisiau i atal defnyddwyr
o gronfeydd data sy'n effeithio yn uniongyrchol.
Rydym ond am ei wneud yn anuniongyrchol, drwy ein hidlo.
Neu gwneud yn siŵr bod popeth yn iawn gan ni yn gwneud ychydig o wirio gwall
neu prawfesur ddiogelwch cyn i ni anfon at y gronfa ddata, lle
gallai pethau fynd o chwith, efallai 'n sylweddol yn anghywir, os nad ydym yn ofalus.
>> Felly MVC yn sefyll am Model View Rheolwr.
Beth mae pob un o'r rhain yn ei olygu?
Yn y bôn, model yn eich cronfa ddata.
Mae'n lle mae'r holl data pwysig ar gyfer eich safle
enwau defnyddwyr lives--, logins, cyfrineiriau.
A gallwch ei ddiweddaru, yn cyfeirio ati, 'n bert lawer bopeth fel' na.
Byddech yn holi cronfa ddata, byddech yn gofyn gwybodaeth o'r gronfa ddata.
Dyna y model-- pob un o'r data lle mae eich safle yn byw.
>> Yr olygfa yn fath o fel profiad y defnyddiwr.
Mae'n y tudalennau a welant ar ôl maent wedi gofyn am wybodaeth.
Felly, efallai eu bod yn cyflwyno eu information-- mewngofnodi
y byddent yn ei wneud yn rheolwr, y byddwn yn siarad am mewn eiliad.
Maent efallai cyflwyno eu Gwybodaeth login,
ac mae'r gronfa ddata yn cael ei holi.
Gofynnir Gwybodaeth a tynnu o'r gronfa ddata.
Ac yna unwaith y bydd y defnyddiwr yn mewngofnodi i mewn, maent yn gweld eu tudalen gartref.
Dyna farn, OK?
>> Ac yna y rheolwr yw beth sy'n Gelwir y rhesymeg busnes eich safle.
A rhesymeg busnes un o'r termau hynny sy'n
yn fath o wishy-washy-- hoffi, beth yw ystyr rhesymeg busnes?
Yn y bôn eich busnes rhesymeg yw eich PHP.
Nid oes angen i'ch defnyddiwr i weld yn uniongyrchol i'ch PHP,
ond mae eich PHP mae'n debyg beth sy'n mynd i fod yn gwneud ceisiadau i'r gronfa ddata.
>> Felly mae'r mewnbwn defnyddwyr ewyllys gwybodaeth mewn golwg,
a fydd yn integreiddio rheolwr.
Fel, byddant yn teipio i mewn i ffurflen.
Sut bod prosesau ffurflen gwybodaeth yw'r rheolydd.
Dyna'r PHP dyna mewn gwirionedd gwneud y cais i'r model.
Ac yna y model yn rhoi gwybodaeth i'r farn,
sy'n rhoi i'r defnyddiwr, efallai gorau visualized fel a ganlyn.
>> Felly dyma ni.
Yma, ni sydd ar y chwith, ac mae ein Model Trefniant patrwm View Rheolwr.
Sut mae'n gweithio?
>> Mae'r us-- user-- yn gwneud yn gofyn i'r rheolwr.
Rydym yn cyflwyno gwybodaeth megis drwy ffurflen HTTP.
Yn seiliedig ar hynny, y rheolwr yn swydd yw gwneud yn siŵr
bod yr hyn nad yw'r defnyddiwr wedi rhoi yn rhywbeth a fyddai'n niweidio'r model.
Ac felly y rheolwr yn mynd i gwneud yn siŵr bod popeth yn iawn.
Mae'n mynd i edrych yn ofalus iawn.
Os oes unrhyw wallau, bydd yn rhoi'r gorau i bethau felly ni all y defnyddiwr gyrraedd y model.
>> Ond gan dybio popeth yn OK ac mae'n ymholiad dilys,
Bydd y rheolwr ymholi y model-- bydd yn gofyn iddo i ddarparu gwybodaeth.
Bydd y model yn darparu bod gwybodaeth i dudalen sy'n 'na barn ni,
bydd yn trosglwyddo ei bod ffordd, ac yna y farn
Bydd poblogi'r y wybodaeth gofynnwyd amdano gan y model.
>> Felly, er enghraifft, os ydym yn sôn am logio i mewn i'ch tudalen Facebook,
er enghraifft.
Byddai'r olygfa yn y data a ddaeth allan o'r model sy'n
yn cyfeirio at eich ffrindiau a'r newyddion bwydo neu pethau fel 'na, dde?
Ond ni fyddech yn gweld rhywun arall.
>> Byddech yn getting-- felly chi gyflwyno ymholiad,
chi logio i mewn i'r esgus model-- mi, byddwch yn logio i mewn i'r dudalen.
Mae'r defnyddiau rheolwr eich gwybodaeth mewngofnodi
i wneud cais i'r model i wneud yn siŵr eich bod yn pwy yr ydych yn dweud eich bod yn.
Fel y model, OK, ie, eich bod yn pwy yr ydych yn dweud eich bod yn,
felly gadewch i mi roi eich porthiant newyddion i chi.
Byddaf yn rhoi data crai i chi eich porthiant newyddion at y farn,
ac yna y farn yn ei gwneud yn 'n bert, prosesau mewn ffordd
ein bod yn ei ddefnyddio i, gan ddangos wybodaeth honno i'r defnyddiwr.
>> Sylwch ar y cysylltiad sy'n Nid presennol ar y diagram hwn.
Does dim cysylltiad uniongyrchol rhyngoch chi a'r model.
Mae bob amser yn byffer hwn o y rheolwr ar yr ochr mewnbwn,
ac mae 'na byffer o'r gweld ar yr ochr allbwn.
>> Efallai eich bod yn dda person, ac yn y blaen efallai eich
Ni fyddai'n gwneud unrhyw ddifrod i'r model, ond efallai nad ydych yn.
Neu efallai mae rhywun sydd wedi ddefnyddiwr maleisus a fyddai efallai
awyddus i niweidio eich cronfa ddata, efallai dileu popeth o eich cronfa ddata,
a allai fod yn ddrud iawn.
Yn amlwg, yw-- data yn cael defnyddiwr mae gwerth at gael data defnyddwyr.
Ac felly pe na baem yn rhoi byffer hwn parth rhwng y defnyddiwr a'r database--
y defnyddiwr a'r pethau model-- Ni allai fod yn mynd cystal i ni.
>> Ac felly mae'n bwysig eich bod cael patrwm hwn lle
gall y defnyddiwr ryngweithio gyda'r gronfa ddata, yn sicr, ond mae'n rhaid iddynt fynd drwy ni
i wneud hynny.
A dyna yn y bôn y syniad gyda MVC.
Mae'n ceisio gweithredu diogelwch data.
Mae'n ceisio amddiffyn y model o anfwriadol neu'n fwriadol
defnyddwyr maleisus.
>> Felly, beth sy'n digwydd pan rydym yn gwneud cais patrwm hwn?
Wel, rydym yn gwahanu'r data sy'n ofynnol gan ein website--
y model-- o'r rhesymeg sy'n gweithredu ar ein gwefan yn
functionality-- yr controller-- a oddi wrth y estheteg a dudalen syml
templedi sy'n cynnwys ein defnyddiwr experience-- olygfa.
Beth mae hyn yn ei olygu?
Wel, mae'n golygu y gallwch wneud yn ystyried weladwy i'r defnyddiwr.
Gallwch guddio y model i ffwrdd.
Ac yn controllers-- y defnyddiwr Ni all efallai drin yn uniongyrchol.
Nid oes angen iddynt gael mynediad i'ch cod PHP.
Jyst angen iddynt weld ffurflen lle y gallant deipio pethau yn.
Felly efallai y ffurflen yn golwg, y rheolwr
yw'r PHP bod y ffurflen yn cyflwyno i, mae'r rheolwr yn gwneud ymholiad at y model,
mae'r model yn rhoi rhagor o wybodaeth i farn wahanol sy'n
dangos gwybodaeth i chi.
>> Gall eich rhaglenni gael mynediad pob un o'ch rhesymeg busnes,
ond ni all eich defnyddwyr yn uniongyrchol gael mynediad at eich rhesymeg busnes.
Ac un yn arbennig, efallai, enghraifft weladwy o hyn
yn ydych wedi cael erioed gwall Forbidden 403.
Ydych chi erioed wedi mynd i we dudalen a gweld 403 Forbidden?
Mae'n fath o fel 404 Not Found.
>> 403 Forbidden yn golygu eich bod wedi ceisio cael mynediad tudalen nad oes gennych fynediad i chi.
Efallai y safle'n gan ddefnyddio MVC gwahanu
i guddio i ffwrdd ei rhesymeg busnes sy'n Mae angen i fodoli ar y gweinydd er mwyn
ar gyfer y dudalen i weithio, ond nid yw'n am i chi gael mynediad ato yn uniongyrchol.
Felly, efallai y byddwch yn cael gwall Forbidden 403.
>> Ac ni fyddai hyd yn oed ots os oeddech wedi mewngofnodi.
Ni all unrhyw ddefnyddiwr cyffwrdd y ffeil PHP dot.
Gallant ond cyffwrdd yr un yma, ac one-- hon
yr un y gallant touch-- efallai Gall ryngweithio gyda'r ffeil cloi i lawr
yn fwy yn anuniongyrchol na'r defnyddiwr.
>> Felly, yr ydym weithiau yn gweld hyn caniatâd gwall, mae hyn yn 403 Forbidden.
Sut ydym ni'n newid caniatadau felly fod pethau y gellir neu na ellir eu gweld?
Pan fyddwn yn gwneud hyn fel arfer yw defnyddio Linux gorchymyn o'r enw chmod-- C-H-mod.
>> I wneud hyn, mae'r fformat yn eithaf simple-- chmod, caniatâd,
a beth bynnag yr ydych am ffeil i gymhwyso newid hwnnw i.
Felly, efallai y byddech yn gweld rhywbeth fel this-- chmod 600 helpers.php.
Neu efallai byddech yn gweld this-- chmod mae x plws sy'n cynnwys cyfeiriadur.
A oedd yw hyn yn golygu er bod?
Felly, mae dwy ffordd wahanol bod caniatadau fel arfer
cymhwyso gan ddefnyddio chmod.
Gelwir y cyntaf y rhifau dull wythol.
Mae hyn fel arfer yn berthnasol caniatadau i dri chategori gwahanol
o ddefnyddwyr ar yr un pryd.
Byddai Felly chmod 711 ffeil caniatáu i chi yr hawl i ddarllen, ysgrifennu, a gweithredu
eich ffeil, yn caniatáu others-- yn benodol
eich grŵp a'r world-- i ddim ond cyflawni'r ffeil.
Dyna beth mae hyn yn cyfateb i.
Y rhif cynta yno yw'r hyn y gallwch ei wneud,
mae'r ail rif yw yr hyn y gall eich grŵp wneud,
ac mae'r trydydd yn yr hyn y gall y byd ei wneud.
Unrhyw un pwy sy'n ymweld â'ch dudalen, dyna y byd.
>> Beth yw rhifau hyn mewn gwirionedd yn cyfieithu i er bod?
Felly mae'r rhain yn y bôn yn cyfieithu fel hyn.
Os bydd y caniatâd yn sero, gall dim yn digwydd.
Os yw'n un, gallwch weithredu y file-- os dyna eich caniatâd.
Os yw'n dau, gallwch ysgrifennu y ffeil ond ni allwch wneud unrhyw beth arall.
Os mai tri, byddwch yn gallu ysgrifennu a gweithredu.
Ac yn y blaen, fel y gwelwch.
A saith yn golygu y gallwch wneud popeth.
>> Felly pam gelwir y rhain rhifau wythol?
Wel, os ydych yn meddwl am y peth, dyma fel noes a yeses,
ac os ydym yn meddwl amdanynt fel bocsys coch a gwyrdd,
efallai sy'n ei gwneud yn ychydig yn gliriach.
Ond os ydym yn meddwl am y blychau coch y rhai fel zeros a'r blychau gwyrdd fel rhai,
mae'r rhain mewn gwirionedd yn unig yn gosod o rifau deuaidd, dde?
000 cyfateb i degol 0; 001, degol 1; 010 yw 2 degol, ac yn y blaen.
Ac felly rydym yn galw'r rhain yn wythol rhifau oherwydd bod
wyth bosibiliadau gwahanol.
Mae wyth gwahanol digidau os ydym
yn sôn am dri darnau o information--
y darn darllen, mae'r ysgrifennu bit, a'r bit gweithredu.
Felly nawr gallwch siarad deuaidd, degol, hecs, a wythol.
Felly, rydych yn gwybod sut i gyfathrebu â cyfrifiaduron mewn pedwar rhif gwahanol
systemau, felly dyna 'n bert oera.
>> Felly, ar wahân i'r wythol Cynllun caniatâd, does
Hefyd caniatâd symbolaidd cynllun, sydd ychydig yn wahanol
ac fel arfer yn cael ei ddefnyddio orau i wneud cais neu dynnu caniatâd ar draws y bwrdd.
Felly chmod yn fantais x ffeil Efallai ychwanegu'r hawl
i weithredu i'r tri categorïau o users--
chi eich hun, eich grŵp, ac yn y byd.
Dyna plws yw'r rhan gan ychwanegu.
Yr hawl i weithredu, dyna'r x.
Ac mae'r ffaith ei fod yn berthnasol i bob Byddai tri grŵp o ddefnyddwyr yn y a.
>> Felly this-- ôl pob tebyg yn x-- plws yn mynd i fod yn union yr un fath â chmod 711
ffeil, oherwydd os byddwch yn mynd yn ôl ac yn edrych ar y cynllun rhif wythol,
rhai a saith bob ochr yn rhoi i ni y hawl i weithredu ffeil.
Felly mae hyn yn ôl pob tebyg yr un fath.
>> A gallwch ddefnyddio hwn canllaw cyfeirio ar gyfer yr hyn
y gwahanol bethau yn y Strwythur chmod-ing symbolaidd yn cael eu.
Byddai'r eitemau gwyrdd yma yn lle mae'r holl esiampl lliw gwyrdd
Roedd yr ail yn ôl.
Byddai'r glas yn y glas.
Byddai'r oren yn yr oren.
Felly, gallwch wneud cais pethau i'ch grŵp, i eraill, at y defnyddiwr,
neu at bawb.
Gallwch roi eu darllen, ysgrifennu, a gweithredu mynediad,
a gallwch ychwanegu neu ddileu neu aseinio union set
caniatâd gan ddefnyddio'r model hwn.
>> Sut ydym yn gwirio beth yw cynllun ganiatâd ffeil?
Cyn i ni ei newid, 'i' yn ôl pob tebyg dda gwybod mewn gwirionedd
beth hawliau'r ffeil yn cael eu.
Un ffordd o wneud hyn yw i redeg ls ond dim ond tweak ei fod ychydig.
Felly, os wyf yn teipio ls dash l-- mae hynny'n llythrennau bach l-- efallai
'N annhymerus' gweld rhywbeth fel hyn.
Mae'n edrych ychydig bach cryptig, ond y rhan yr ydym yn wir yn poeni am
yw'r pethau ar y chwith dros yno.
Sydd mewn gwirionedd yn pennu cynllun ganiatâd ffeil.
Ac mae'n debyg y gallwch ddweud am ei fod yn got r, yn w, ac x yn gymysg.
>> Mae'r rhai three-- cyntaf gan anwybyddu'r un cyntaf
am eiliad, a oedd yn byddwn yn dyblu yn ôl i.
Mae'r rhai tri cyntaf ar ôl y first-- felly yr ail,
yn drydydd, a chymeriadau pedwerydd y llinyn 10 cymeriad
yn y caniatâd sydd gennych.
Felly, mae'n debyg y gall yr wyf yn darllen, ysgrifennu, a gweithredu PHP.
Gallaf ddarllen, ysgrifennu a gweithredu PHP WebDev,
ac yr wyf yn gallu darllen ac ysgrifennu test.php.
>> Gall fy ngrŵp wneud hyn.
Felly, mae'n debyg gyda'r PHP a chyfeiriaduron PHP WebDev,
Gall fy ngrŵp ysgrifennu at ohonynt, ond dim byd arall.
Ac ni all y byd yn gwneud unrhyw beth.
Felly nid ffeiliau hyn yn sy'n hygyrch i'r cyhoedd
ac os wyf yn ceisio gael gafael arnynt ac nid oeddwn yn
rhedeg Apache i'w gwneud yn hygyrch, yna byddwn yn cael gwall 403.
Mae'n fethiant.
Ceisiais i gael mynediad i ffeil ond yr wyf yn Nid oes rhaid i ganiatâd i wneud hynny.
A beth yw bod cymeriad cyntaf?
Wel, mae'n debyg y gallwch allosod yma fod y d's cyfeirio at cyfeirlyfrau
a'r llinell doriad yn cyfeirio at "Ffeiliau rheolaidd." hyn a elwir yn
Ac efallai eich bod wedi gweld hyn pan fyddwch chi wedi ceisio cael gwared ffeil gan ddefnyddio rm.
Rydych chi wedi gweld y neges cryptig "Cael gwared ar ffeil rheolaidd" - yn yr achos hwn,
byddai'n cael ei test.php.
Ffeil yn rheolaidd yn unig yw rhywbeth nid yw hynny'n cyfeiriadur.
Mae un neu ddau o bobl eraill yma, ond yn gyffredinol rydych yn
mynd i weld d's ar gyfer cyfeiriaduron a dim byd ar gyfer yr elfen gyntaf.
Ond dyna mewn gwirionedd pawb mae iddo.
Gallwch edrych ffeil caniatâd gan ddefnyddio llinell doriad ls l,
gallwch ei newid eu defnyddio chmod.
Ac, wrth gwrs, defnyddiwch these-- newid y caniatâd
gorfodi hyn patrwm MVC i ddiogelu'r data ar eich gwefan
ac nid caniatáu i ddefnyddwyr i gael gafael ar bopeth,
ond dim ond y pethau sydd eu hangen arnynt i gael mynediad er mwyn eich tudalen
i weithio y ffordd yr ydych am iddo weithio.
>> Rwy'n Doug Lloyd.
Mae hyn yn CS50.