DOUG LLOYD: Soms als we het programmeren
we dingen doen zo vaak, dus vaak, en zo veel mensen
hetzelfde doen idea-- of dezelfde ding, dat het een naam.
MVC is precies een dergelijk ding.
Het heet een programmeertaal paradigma.
Het is als een soort 'best practices' die zijn gedistilleerd neer
door mensen die proberen om iets te doen.
In dit geval voeren een systeem bladzijden
dat een gebruiker met Op een complexere website.
En het is zo algemeen dat gedaan het wordt aanbevolen als een standaard
dat andere mensen misschien leuk om te volgen, en er is een zeer specifieke set van manieren
men kon dit paradigma volgen.
>> Dus, MVC is een paradigma, en de reden we gebruiken het om abstracte gegevens weg
van de gebruiker.
Sommige dingen van de gebruiker niet echt nodig hebt om te zien.
Ze willen gewoon hebben een goede gebruikerservaring,
en we hoeven niet om hen te hebben toegang te krijgen tot elk bestand dat
bestaat op onze webserver, misschien.
Er misschien een aantal bestanden die net zijn gebruikt om de gebruikerservaring te versterken,
en zo kunnen we abstracte die afstand.
We kunnen soort verbergen hen zo de gebruiker kan niet werken met hen,
maar onze pages-- onze pages-- weet hoe om te gaan met hen
en bel hen of misschien wel nodig, wil dat ze, of iets dergelijks.
>> De primaire motivatie MVC is voor de beveiliging van gegevens,
omdat MVC komt meestal in de context van het werken met databases.
En in het bijzonder wij wil voorkomen dat gebruikers
van direct invloed databases.
We willen alleen maar om het indirect doen, via onze filtratie.
Of ervoor te zorgen dat alles in orde is door doet ons een beetje van foutcontrole
of veiligheid proofing voordat we sturen naar het gegevensbestand, waarbij
dingen kunnen fout gaan, misschien echt verkeerd, als we niet oppassen.
>> Dus MVC staat voor Model View Controller.
Wat doen al deze betekenen?
In principe, het model is uw database.
Het is waar alle belangrijke gegevens voor uw site
lives-- gebruikersnamen, logins, wachtwoorden.
En je kunt het updaten, verwijzen naar het, vrijwel alles als dat.
Je zou een database query, zou je vragen informatie uit de database.
Dat is het model-- alle data waar uw site woont.
>> Het uitzicht is een soort de gebruikerservaring.
Het is de pagina's die ze zien na zij hebben informatie gevraagd.
Dus misschien dienen ze hun login information--
die zij in een controller, die we over praten in een tweede.
Zij misschien dienen hun login-gegevens,
en de database opgevraagd.
Informatie wordt gevraagd en opgehaald uit de database.
En vervolgens eenmaal de gebruiker ingelogd in, zien ze hun home page.
Dat is een uitzicht, OK?
>> En dan is de controller is wat genaamd de business logica van uw site.
En business logica is een van die termen die
is een soort van wishy-washy-- willen, wat betekent business logica betekenen?
In principe uw bedrijf logica is uw PHP.
Uw gebruiker hoeft niet om direct te zien uw PHP,
maar uw PHP is waarschijnlijk wat er gaande te maken verzoeken aan de database.
>> Zodat de gebruiker wil invoeren informatie in het oog,
die een controller geïntegreerd.
Zoals, zullen ze typen in een formulier.
Hoe die vorm processen informatie de controller.
Dat is de PHP dat is eigenlijk die het verzoek aan het model.
En dan is het model geeft informatie aan het uitzicht,
die het aan de gebruiker geeft, misschien het best gevisualiseerd als volgt.
>> Dus hier zijn we.
Hier is ons aan de linkerkant, en onze Model View Controller paradigma regeling.
Hoe werkt het?
>> De user-- ons-- maakt een verzoeken de controller.
We dienen informatie zoals door een HTTP vorm.
Op basis van dat, de controller taak is om ervoor te zorgen
dat wat de gebruiker heeft gegeven is niet iets dat het model zou kunnen beschadigen.
En zo de besturing gaat ervoor te zorgen dat alles in orde is.
Het gaat om heel zorgvuldig kijken.
Als er fouten, zal het de dingen stoppen zodat de gebruiker kan niet naar het model.
>> Maar ervan uitgaande dat alles is OK en het is een geldige vraag,
de controller zal het model-- opvragen Het zal het vragen om informatie te verstrekken.
Het model zal bepalen dat informatie naar een pagina die is een mening,
Het zal het doorgeven dat weg, en dan het uitzicht
zal de informatie bevolken aangevraagd bij het model.
>> Dus, bijvoorbeeld, als we praten over het inloggen in uw Facebook-pagina,
bijvoorbeeld.
Het uitzicht zou de gegevens zijn die uit het model kwam dat
verwijst naar uw vrienden en het nieuws voeden of dat soort dingen, toch?
Maar je zou niet zien iemand anders.
>> Je zou dus worden getting-- u een query in te dienen,
u bent ingelogd op het model-- excuus mij, u inloggen op de pagina.
De controller gebruik uw login gegevens
een verzoek om het model te maken ervoor dat je bent wie je zegt te zijn.
Het model als, OK, ja, je bent wie je zegt te zijn,
dus laat me u uw nieuws-feed.
Ik zal u de ruwe data te geven je nieuwsfeed om het uitzicht,
en dan het uitzicht maakt het mooi, verwerkt op een manier
dat we gewend zijn, het weergeven dat informatie aan de gebruiker.
>> Let op de verbinding die is niet bestaan ​​op dit schema.
Er is geen directe verbinding tussen u en het model.
Er is altijd deze buffer van de regelaar aan de ingangszijde,
en er is een buffer van de uitzicht op de uitgaande zijde.
>> Misschien bent u een goede persoon, en dus misschien u
zou geen schade aan het doen model, maar misschien ben je niet.
Of misschien is er iemand die er een kwaadwillende gebruiker die zou misschien
wilt uw database beschadigen, misschien uit uw database verwijderen alles,
die zeer duur kunnen zijn.
Uiteraard heeft gebruikersgegevens is-- er waarde hebben van gebruikersgegevens.
En dus als we niet zet dit buffer zone tussen de gebruiker en de database--
de gebruiker en het model-- dingen misschien niet zo goed gaan voor ons.
>> En dus is het belangrijk om hebben dit paradigma, waar
de gebruiker kan communiceren met de database, zeker, maar ze moeten gaan door middel van ons
om het te doen.
En dat is eigenlijk het idee met MVC.
Het probeert uit te voeren beveiliging van gegevens.
Het probeert het model bescherming per ongeluk of opzettelijk
kwaadwillende gebruikers.
>> Dus wat gebeurt er als we dit paradigma van toepassing?
Nou, we zijn de gegevens te scheiden vereist van onze website--
het model-- van de logica dat implementeert onze website
functionality-- de controller-- en van de eenvoudige esthetiek en pagina
sjablonen die bestaat uit onze gebruiker experience-- het uitzicht.
Wat betekent dit?
Nou, het betekent dat je kunt maken beschouwt zichtbaar voor de gebruiker.
U kunt het model verstoppen.
En controllers-- de gebruiker kan misschien niet direct manipuleren.
Ze hoeven niet om uw PHP-code.
Ze hoeven alleen maar om een ​​formulier te zien waar ze spullen kunt typen.
Dus misschien is de vorm het oog, de controller
is de PHP dat het formulier indient bij de controller maakt een query aan het model,
het model geeft meer informatie naar een andere opvatting dat
geeft informatie aan u.
>> Uw programma's toegang al uw business logica,
maar gebruikers kunnen niet direct toegang tot uw business logica.
En een bijzonder misschien zichtbare illustratie van deze
is dat je ooit hebt gekregen een 403 Forbidden error.
Heb je ooit een web gegaan pagina en gezien 403 verboden?
Het is een soort als 404 Not Found.
>> 403 Forbidden betekent dat je geprobeerd om toegang te krijgen een pagina die u geen toegang tot hebben.
Misschien is die site is met behulp van MVC scheiding
om weg te verbergen haar business logica dat moet bestaan ​​op de server zodat
voor de pagina om te werken, maar niet wil dat je direct toegang tot het.
Dus je zou een 403 Forbidden foutmelding krijgen.
>> En het zou zelfs niet uit als je ingelogd.
Geen gebruiker kan deze dot PHP bestand te raken.
Ze kunnen alleen aanraken deze, en dit een--
degene die ze misschien kunnen touch-- kan interageren met de vergrendelde bestanden
meer indirecte dan de gebruiker.
>> Dus, soms zien we dit permissies fout, dit 403 verboden.
Hoe kunnen we permissies te veranderen zodat dat de dingen wel of niet kan worden gezien?
Als we dit doen typisch een gebruik Linux commando genaamd chmod-- C-H-mod.
>> Om dit te doen, het formaat is vrij simple-- chmod, toestemmingen,
en wat bestand dat u wilt om die verandering aan te brengen.
Dus misschien zou je iets ziet zoals dit-- chmod 600 helpers.php.
Of misschien zou je dit-- chmod zien een plus x die directory bevat.
Was betekent dit al?
Dus, is er op twee verschillende manieren dat machtigingen zijn meestal
toegepast met behulp van chmod.
De eerste wordt de octale getallen methode.
Dit geldt meestal toestemmingen drie verschillende categorieën
gebruikers tegelijkertijd.
Dus chmod 711 bestand zou je toestaan het recht om te lezen, schrijven en uitvoeren
bestand, zou toestaan others-- specifiek
uw groep en de wereld-- alleen het bestand uit te voeren.
Dat is wat dit vertaalt.
Het eerste nummer is er is wat je kunt doen,
het tweede getal is wat uw groep kan doen,
en de derde is wat de wereld kan doen.
Iedereen die is een bezoek aan uw pagina, dat is de wereld.
>> Wat zijn deze nummers eigenlijk vertalen naar al?
Dus deze eigenlijk te vertalen als deze.
Indien toestemming is nul, niets kan gebeuren.
Als het is, kun je het uitvoeren file-- als dat uw toestemming.
Als het twee, kunt u het bestand te schrijven maar je kunt niet iets anders te doen.
Als het drie, u kan schrijven en uitvoeren.
En zo verder, zoals je kunt zien.
En zeven betekent dat je alles te doen.
>> Dus waarom zijn deze zogenaamde octale nummers?
Nou, als je erover nadenkt, hier is zoals noes en yeses,
en als we denken over hen rood en groen dozen,
misschien is dat maakt het een beetje duidelijker.
Maar als we denken over die rode dozen als nullen en de groene vakjes als degenen,
Dit zijn eigenlijk gewoon sets van binaire getallen, toch?
000 vertaalt naar decimaal 0; 001, decimaal 1; 010 is decimaal 2, enzovoort.
En dus hebben we deze octale noemen getallen omdat
acht verschillende mogelijkheden.
Er zijn acht verschillende cijfers als we
over drie stukjes van information--
de gelezen bit, de schrijfsnelheid bit, en de uit te voeren bit.
Dus nu je kunt spreken binair, decimale, hexadecimale en octale.
Dus je weet hoe te communiceren met computers in vier verschillende aantal
systemen, dus dat is wel cool.
>> Dus, naast de octale toestemming regeling, er is
Ook de symbolische toestemming stelsel, dat iets anders
en meestal het beste wordt gebruikt om toe te passen of verwijderen van een toestemming over de hele linie.
Dus chmod een plus x bestand kan het juiste toevoegen
uit te voeren voor alle drie categorieën users--
uzelf, uw groep, en de wereld.
Dat pluspunt is de toevoeging van een deel.
Het recht om uit te voeren, dat is de x.
En dat geldt voor alle drie groepen van gebruikers zouden de een zijn.
>> Dus dit-- een plus x-- is waarschijnlijk precies hetzelfde als chmod 711 zijn
bestand, want als je terug gaan en kijk naar de octale nummer regeling,
enen en zevens geven ons de recht om een ​​bestand uit te voeren.
Dus dit is waarschijnlijk hetzelfde.
>> En u kunt dit gebruiken naslagwerk voor wat
de verschillende dingen in de symbolische chmod-ing structuur.
De groene items hier zou zijn waar al het groen gekleurde voorbeeld
was een seconde geleden.
De blauwe zou het blauw zijn.
De oranje zou oranje zijn.
Dus je kunt dingen toepassen op uw groep anderen, voor de gebruiker,
of voor iedereen.
Je kunt geven ze te lezen, schrijven en uitvoeren toegang,
en u kunt toevoegen of verwijderen of wijs precies een set
machtigingen het gebruik van dit model.
>> Hoe kunnen we nagaan wat een file toestemming regeling?
Voordat we veranderen, het is waarschijnlijk goed om daadwerkelijk te weten
welke permissies zijn.
Een manier om dit te doen is ls lopen maar gewoon tweak het een beetje.
Dus als ik typ ls dash L-- dat is een kleine L-- misschien
Ik zal zoiets als dit te zien.
Het ziet er een beetje cryptisch, maar het deel dat we echt zorgen over
is het spul aan de linkerzijde daar.
Die eigenlijk specificeert bestandstoegang regeling.
En je kunt waarschijnlijk vertellen, want het is kreeg r's, w's en x's afgewisseld.
>> Die eerste three-- het negeren van de eerste
een tweede, die we komen zeker terug te verdubbelen.
Die eerste drie na de first-- zodat de tweede,
derde en vierde teken van deze 10 tekenreeks
zijn de rechten die je hebt.
Dus blijkbaar kan ik lezen, schrijven en uitvoeren PHP.
Ik kan lezen, schrijven, en voeren PHP WebDev,
en ik kan lezen en schrijven test.php.
>> Mijn fractie kan dit doen.
Dus blijkbaar met de PHP en PHP WebDev directories,
mijn groep kan schrijven hen, maar niets anders.
En de wereld kan niets doen.
Zodat deze bestanden niet openbaar toegankelijke
en als ik probeerde om toegang tot hen en ik was niet
Apache om ze toegankelijk te maken, dan zou ik een 403 error krijgen.
Het is een mislukking.
Ik heb geprobeerd om toegang te krijgen tot een bestand, maar ik do rechten om het te doen hebben.
En wat is dat eerste teken?
Nou ja, kunt u waarschijnlijk extrapoleren hier dat de d's verwijzen naar mappen
en het streepje verwijst naar zogenaamde "normale bestanden."
En misschien heb je dit gezien als je hebt geprobeerd om een ​​bestand met rm te verwijderen.
Je hebt de cryptische boodschap gezien "verwijder regulier bestand" - in dit geval,
het zou test.php zijn.
Regulier bestand is gewoon iets dat is niet een directory.
Er zijn een paar van de anderen hier, maar over het algemeen ben je
gaan zien d's voor directories en niets van het eerste element.
Maar dat is echt alles wat er is.
U kunt het bestand controleren toestemmingen met ls dash l,
u kunt ze wijzigen met chmod.
En, natuurlijk, gebruikt these-- het veranderen van de permissies
deze MVC paradigma af te dwingen de gegevens op uw website
en niet-gebruikers toestaan om alles,
maar alleen de dingen die ze nodig hebben om toegang te krijgen om voor uw pagina
aan de manier waarop u het wilt werken werken.
>> Ik ben Doug Lloyd.
Dit is CS50.