DOUG LLOYD: Soms wanneer ons programmering ons dinge doen so algemeen, so gereeld, en soveel mense doen dieselfde idea-- of dieselfde ding, dat dit 'n naam. MVC is presies een so 'n ding. Dit is bekend as 'n programmeertaal paradigma. Dit is soort van soos 'n beste praktyke wat gedistilleer af deur mense wat probeer om iets te doen. In hierdie geval, te implementeer 'n stelsel van bladsye dat 'n gebruiker interaksie met op 'n meer komplekse webwerf. En dit is so algemeen dat gedoen dit aanbeveel as 'n standaard dat ander mense dalk wil om te volg, en daar is 'n baie spesifieke stel maniere dat 'n mens kan hierdie paradigma te volg. So, MVC is 'n paradigma, en die rede ons gebruik dit om abstrakte weg besonderhede van die gebruiker. Sommige dinge die gebruiker nie regtig nodig het om te sien. Hulle wil net hê 'n goeie gebruikers ervaring, en ons het nie nodig om hulle te hê toegang elke enkele lêer wat bestaan ​​op ons web bediener, miskien. Daar is dalk 'n paar lêers wat net is gebruik om die gebruikers se ervaring te versterk, en so kan ons abstrakte diegene weg. Ons kan soort van verberg hulle so die gebruiker kan nie saam met hulle werk, maar ons pages-- ons pages-- weet hoe om dit te hanteer en noem hulle of dalk nodig het, wil hulle, of iets soos dit. Die primêre motivering vir MVC is data sekuriteit, omdat MVC kom gewoonlik in die konteks van die werk met databasisse. En in die besonder ons wil verhoed dat gebruikers vanaf direk impak databasisse. Ons wil net om dit indirek te doen, deur ons filtrasie. Of om seker te maak dat alles OK se deur doen ons 'n bietjie van foutopsporing of veiligheid bestendigheid voordat ons stuur dit na die databasis, waar dinge kan verkeerd gaan, miskien werklik verkeerd, as ons nie versigtig is nie. So MVC staan ​​vir Model View Controller. Wat doen elkeen van hierdie beteken? Basies, model is jou databasis. Dit is waar al die belangrike inligting vir jou site lives-- gebruikers, logins, wagwoorde. En jy kan dit verander, verwys na dit, pretty much alles soos dit. Jy wil 'n databasis navraag, sou jy vra inligting van die databasis. Dit is die model-- al die data waar jou werf woon. Die uitsig is soort van soos die gebruikers ervaring. Dit is die bladsye wat hulle sien nadat hulle inligting versoek. So miskien stuur hulle hul login information-- wat hulle sou doen in 'n kontroleerder, wat ons sal praat oor in 'n tweede. Hulle miskien dien hul login inligting, en die databasis word bevraagteken. Inligting aangevra getrek uit die databasis. En dan wanneer die gebruiker se aangemeld in, sien hulle hul tuisblad. Dit is 'n vertoning, OK? En dan is die beheerder is wat is genoem die besigheid logika van jou site. En besigheid logika is een van daardie terme wat is 'n soort van wishy-washy-- wil, wat beteken besigheid logika beteken? Basies jou besigheid logika is jou PHP. Jou gebruiker het nie nodig direk te sien jou PHP, maar jou PHP is waarskynlik wat gaan te wees om versoeke aan die databasis. So sal die gebruiker insette inligting in die oog, wat sal 'n beheerder te integreer. Soos, sal hulle tik in 'n vorm. Hoe daardie vorm prosesse inligting is die kontroleerder. Dit is die PHP wat eintlik die versoek om die model. En dan is die model gee inligting aan die oog, wat dit aan die gebruiker gee, miskien die beste gevisualiseer as volg. So hier is ons. Hier is ons op die linkerkant, en ons model View Controller paradigma reëling. Hoe werk dit? Die user-- us-- maak 'n versoek om die kontroleerder. Ons om inligting soos deur 'n HTTP vorm. Gebaseer op dat die beheerder se werk is om seker te maak dat dit wat die gebruiker gegee het, is nie iets wat die model sou beskadig. En so het die beheerder gaan seker te maak dat alles is OK. Dit gaan 'n baie mooi kyk. As daar enige foute, sal dit dinge stop sodat die gebruiker kan nie op die model. Maar die veronderstelling alles is OK en dit is 'n geldige vraag, die kontroles sal die model-- navraag dit sal dit vra om inligting te verskaf. Die model sal voorsien wat inligting om 'n bladsy wat is 'n uitsig, dit sal dit oordra dat manier, en dan die oog sal die inligting bevolk versoek van die model. So, byvoorbeeld, as ons praat oor te meld by jou Facebook-bladsy, byvoorbeeld. Die uitsig sou die data wees wat uit die model het gekom, dat verwys na jou vriende en die nuus voed of dinge soos wat, reg? Maar jy sal nie sien iemand anders se. Jy wil so getting-- jy 'n navraag in te dien, jy inteken op die model-- verskoning My, julle aan te meld by die bladsy. Die beheerder gebruike jou inskrywing inligting 'n versoek om die model te maak seker dat jy is wie jy sê jy is. Die model se wil, OK, ja, jy is wie jy sê jy is, so laat my gee u nuus voer. Ek sal jou die rou data vir gee jou nuusvoer op die oog, en dan die siening maak dit mooi, verwerk dit in 'n manier wat ons gebruik om, vertoon dat die inligting aan die gebruiker. Let op die verband wat nie bestaande op hierdie diagram. Daar is geen direkte verband tussen jou en die model. Daar is altyd hierdie buffer van die kontroles op die insetkant, en daar is 'n buffer van die sien op die uitset kant. Miskien is jy 'n goeie persoon, en so miskien het jy sou nie enige skade aan die doen model, maar miskien is jy nie. Of miskien is daar iemand wie se 'n kwaadwillige gebruiker wat sou dalk wil jou databasis beskadig, miskien van jou databasis verwyder alles, wat baie duur kan wees. Dit is duidelik dat, met die gebruiker data is-- daar is waarde om met die gebruiker data. En so as ons nie sit dit buffer sone tussen die gebruiker en die database-- die gebruiker en die model-- dinge dalk nie so goed gaan vir ons. En daarom is dit belangrik om hierdie paradigma waar die gebruiker kan interaksie met die databasis, seker nie, maar hulle het om te gaan deur ons om dit te doen. En dit is basies die idee met MVC. Dit is probeer om te implementeer data sekuriteit. Dit is besig om die model te beskerm per ongeluk of opsetlik kwaadwillige gebruikers. So wat gebeur wanneer ons hierdie paradigma van toepassing? Wel, ons die data te skei vereis van ons website-- die model-- uit die logika wat implemente ons webwerf se functionality-- die controller-- en van die eenvoudige estetiese en bladsy templates wat uit ons gebruiker experience-- die oog. Wat beteken dit? Wel, dit beteken dat jy kan maak beskou sigbaar vir die gebruiker. Jy kan die model wegkruip. En controllers-- die gebruiker kan nie dalk direk manipuleer. Hulle het nie nodig om toegang tot jou PHP-kode. Hulle het net nodig om 'n vorm te sien waar hulle dinge kan tik in. So miskien is die vorm 'n oog, die beheerder is die PHP dat die vorm instuur om die kontroleerder maak 'n navraag aan die model, die model gee meer inligting na 'n ander siening dat gee inligting aan jou. Jou programme kan toegang al jou besigheid logika, maar jou gebruikers kan nie direk toegang tot jou besigheid logika. En 'n besonder, miskien, sigbare voorbeeld van hierdie is jy al ooit ontvang 'n 403 Forbidden fout. Het jy al ooit 'n web gegaan page en gesien 403 Forbidden? Dit is soort van soos 404 nie gevind nie. 403 Forbidden beteken dat jy probeer om toegang tot 'n bladsy wat jy nie toegang het. Miskien webwerf is gebruik van MVC skeiding om weg te steek sy besigheid logika wat moet bestaan ​​op die bediener om vir die bladsy om te werk, maar nie wil jy direk toegang het. So jy dalk 'n 403 Forbidden fout. En dit sou nie eens saak as jy aangemeld is. Geen gebruiker kan dit dot PHP lêer te raak. Hulle kan net raak hierdie een, en dit one-- die een wat hulle dalk kan touch-- kan interaksie met die geslote-down lêer meer indirek as die gebruiker. So, soms sien ons hierdie regte fout, hierdie 403 verbode. Hoe weet ons regte te verander sodat dat dinge kan of kan nie gesien word nie? Wanneer ons dit doen tipies is om 'n gebruik Linux opdrag genoem chmod-- C-H-mod. Om dit te doen, die formaat is redelik simple-- chmod, regte, en alles wat jy wil lêer dat verandering om aansoek te doen. So, miskien is jy wil sien iets soos this-- chmod 600 helpers.php. Of miskien wil jy this-- chmod sien 'n plus x wat gids sluit. Was beteken dit al? So, daar is twee verskillende maniere dat regte is gewoonlik toegepas met behulp van chmod. Die eerste word genoem die oktale getalle metode. Dit geld gewoonlik regte drie verskillende kategorieë gebruikers op dieselfde tyd. So chmod 711 lêer sal jy toelaat dat die reg om te lees, skryf, en uit te voer jou lêer sal toelaat others-- spesifiek jou groep en die world-- om slegs die lêer uit te voer. Dit is wat dit beteken om. Die eerste nommer is daar is wat jy kan doen, die tweede getal is wat jou groep kan doen, en die derde is wat die wêreld kan doen. Enigiemand wat is die besoek van jou bladsy, dit is die wêreld. Wat is hierdie getalle eintlik vertaal na al? So het hierdie basies vertaal soos hierdie. Indien die goedkeuring nul, niks kan gebeur. As dit is een, kan jy voer die file-- as dit jou toestemming. As dit twee, kan jy die lêer skryf maar jy kan nie enige iets anders te doen. As dit is drie, jy kan skryf en uit te voer. En so aan, soos jy kan sien. En sewe beteken dat jy alles kan doen. So hoekom is hierdie sogenaamde oktale getalle? Wel, as jy daaroor dink, hier is soos stemme teen en yeses, en as ons dink oor hulle as rooi en groen bokse, Miskien is dit maak dit 'n bietjie duideliker. Maar as ons dink oor die rooi bokse as nulle en die groen bokse as kinders, dit is eintlik net stelle van binêre getalle, reg? 000 vertaal desimaal 0; 001, desimale 1; 010 is desimale 2, en so aan. En so het ons hierdie oktale noem getalle, want daar is agt verskillende moontlikhede. Daar is agt verskillende syfers as ons praat oor drie stukkies information-- die lees bietjie, die skryf bietjie, en die uitvoer bietjie. So nou kan jy praat binêre, desimale, hex, en oktale. Sodat jy weet hoe om te kommunikeer met rekenaars in vier verskillende aantal stelsels, so dit is pretty cool. So, afgesien van die oktale toestemming skema, is daar ook die simboliese toestemming skema, wat is effens anders en gewoonlik die beste gebruik word om aansoek te doen of verwyder 'n toestemming in die raad. So chmod 'n plus x lêer dalk die regte voeg om uit te voer om al drie kategorieë van users-- jouself, jou groep, en die wêreld. Dit is die toevoeging van plus deel. Die reg om uit te voer, is dit die x. En die feit dat dit van toepassing is op alle drie groepe gebruikers sal die a. So this-- 'n plus x-- is waarskynlik gaan om presies dieselfde as chmod 711 wees lêer, want as jy terug gaan en kyk na die oktale getal skema, kinders en sewes gee ons die reg om 'n lêer te voer. So is dit waarskynlik dieselfde. En jy kan dit gebruik verwysing gids vir wat die verskillende dinge in die simboliese chmod-ing struktuur is. Die groen items hier sou wees waar al die groen gekleurde byvoorbeeld was 'n tweede gelede. Die blou sal die blou. Die oranje sou die oranje wees. Sodat jy kan dinge van toepassing op jou groep, aan ander, aan die gebruiker, of vir almal. Jy kan gee hulle te lees, skryf, en uit te voer toegang, en jy kan byvoeg of verwyder of toewys presies 'n stel van regte gebruik van hierdie model. Hoe weet ons kyk wat 'n lêer toestemming skema is? Voordat ons dit verander, dit is waarskynlik goed om werklik te weet wat die permissies is. Een manier om dit te doen, is om te hardloop ls maar net aanpas dit 'n bietjie. So as ek tik ls stamp l-- dit is 'n klein l-- miskien Ek sal iets soos hierdie te sien. Dit lyk 'n bietjie kripties, maar die deel wat ons regtig omgee is die dinge aan die linkerkant daar. Wat eintlik spesifiseer 'n lêer toestemming skema. En jy kan waarskynlik vertel, want dit is het r se w se en x se afgewissel. Daardie eerste three-- ignoreer die eerste een vir 'n tweede, wat ons sal terug te verdubbel. Diegene eerste drie ná die first-- so die tweede, derde en vierde karakters van daardie 10 karakterstring is die regte wat jy het. So glo ek kan lees, skryf, en uit te voer PHP. Ek kan lees, skryf, en voer PHP WebDev, en ek kan lees en skryf test.php. My groep kan dit doen. So glo met die PHP en PHP WebDev dopgehou, my groep kan skryf hulle, maar niks anders nie. En die wêreld kan niks doen nie. So hierdie lêers is nie die publiek toeganklik en as ek probeer om toegang tot hulle en ek was nie hardloop Apache om dit toeganklik te maak, dan sou ek 'n 403 fout. Dit is 'n mislukking. Ek het probeer om toegang tot 'n lêer, maar ek nie regte om dit te doen nie. En wat is die eerste karakter? Wel, jy kan seker ekstrapoleer hier dat die d's verwys na dopgehou en die paneelbord verwys na sogenaamde "gewone lêers." En miskien het jy dit gesien word wanneer jy het probeer om 'n lêer met rm te verwyder. Jy het die kriptiese boodskap gesien "verwyder gereelde lêer" - in hierdie geval, dit sou test.php wees. Gereelde lêer is net iets dit is nie 'n gids nie. Daar is 'n paar van die ander hier, maar oor die algemeen is jy gaan om te sien d's vir dopgehou en niks vir die eerste element. Maar dit is regtig al wat daar is om dit. Jy kan lêer kyk regte met behulp ls stamp l, jy kan verander met behulp van chmod. En, natuurlik, gebruik these-- die verandering van die regte hierdie MVC paradigma te dwing die data te beskerm op jou webwerf en nie toelaat dat gebruikers om toegang tot alles maar slegs die dinge wat hulle nodig het om toegang te verkry om vir jou bladsy om die manier waarop jy dit wil hê om te werk werk. Ek is Doug Lloyd. Dit is CS50.