DOUG LLOYD: Nogle gange når vi programmerer vi gør tingene så almindeligt, så hyppigt, og så mange mennesker gøre det samme idea-- eller den samme ting, at det har et navn. MVC er præcis en sådan noget. Det kaldes en programmering paradigme. Det er slags ligesom en bedste praksis der er blevet destilleret ned af folk, der forsøger at gøre noget. I dette tilfælde gennemføre et system af sider at en bruger interagerer med på en mere kompleks hjemmeside. Og det er gjort så almindeligt, at det anbefales som standard at andre mennesker måske gerne følge, og der er en meget specifik sæt af måder at man kunne følge dette paradigme. Så MVC er et paradigme, og grunden vi bruger det til abstrakte væk detaljer fra brugeren. Nogle ting brugeren ikke virkelig brug for at se. De ønsker blot at have en god brugeroplevelse, og vi behøver ikke at have dem adgang hver eneste fil, findes på vores web-server, måske. Der kan være nogle filer, der er lige bruges til at styrke brugeroplevelsen, og så kan vi abstrakt dem væk. Vi kan slags skjule dem, så brugeren kan ikke arbejde med dem, men vores Og den slags vores Og den slags vide, hvordan man håndtere dem og kalde dem eller måske kræve, vil have dem, eller noget lignende. Den primære motivation for MVC er datasikkerhed, fordi MVC normalt kommer op i sammenhæng med at arbejde med databaser. Og især, vi undgå brugere fra direkte indvirker databaser. Vi ønsker kun at gøre det indirekte gennem vores filtrering. Eller at sikre, at alt er OK ved os gøre en lille smule af fejlkontrol eller sikkerhed korrektur, før vi sende den til databasen, hvor ting kunne gå galt, måske rigtig galt, hvis vi ikke passer på. Så MVC står for Model View Controller. Hvad gør hver af disse betyde? Dybest set, model er din database. Det er, hvor alle de vigtige data til dit websted lives-- brugernavne, logins, passwords. Og du kan opdatere den, henvise til det, stort set alt sådan. Du ville forespørge en database, ville du spørge information fra databasen. Det er den model-- alle de data, hvor dit websted bor. Udsigten er lidt ligesom brugeroplevelsen. Det er de sider, de ser efter de har anmodet om oplysninger. Så måske de indsende deres login-information-- som de ville gøre i en controller, som vi vil tale om i en anden. De måske indsende deres login-oplysninger, og databasen er forespurgt. Der anmodes om oplysninger og trukket fra databasen. Og derefter en gang brugerens logget i, de ser deres hjemmeside. Det er en opfattelse, OK? Og så er regulatoren, hvad der er kaldet forretningslogik af dit websted. Og forretningslogik er et af disse udtryk, som er en slags wishy-washy-- lide, hvad betyder forretningslogik betyde? Dybest set din virksomhed logik er din PHP. Din Brugeren behøver ikke til direkte at se din PHP, men din PHP er sandsynligvis, hvad der foregår at gøre anmodninger til databasen. Så vil brugeren input oplysninger i en visning, der vil integrere en controller. Ligesom, vil de skrive i en formular. Hvordan at danner processer oplysninger controlleren. Det er den PHP, der er faktisk fremsætter anmodningen til modellen. Og så modellen giver information til visningen, hvilket giver det til brugeren, måske bedst visualiseres som følger. Så her er vi. Her er os på venstre, og vores model Vis Controller paradigme arrangement. Hvordan virker det? Den user-- os-- gør en anmodning til controlleren. Vi indsende oplysninger såsom ved en HTTP form. Baseret på, at controllerens opgave er at sørge for, at hvad brugeren har givet ikke noget, der ville ødelægge modellen. Og så controlleren kommer til at Sørg for, at alt er OK. Det kommer til at se meget nøje. Hvis der er nogen fejl, vil det stoppe ting så brugeren ikke kan få til modellen. Men under forudsætning af alt er OK, og det er et gyldigt forespørgsel, vil regulatoren forespørge model-- det vil bede den om at give oplysninger. Modellen vil give det oplysninger til en side, der er en visning, det vil videregive det, at måde, og derefter visningen vil befolke oplysninger anmodet modellen. Så for eksempel, hvis vi taler om at logge ind på din Facebook-side, for eksempel. Udsigten ville være data der kom ud af den model, der refererer til dine venner og nyheder foder eller sådan noget, ikke? Men du ville ikke se nogen andens. Du vil blive getting-- så du sender en forespørgsel, du logge på model-- undskyldning mig, du logger ind på siden. Controller anvendelser dine login-oplysninger at fremsætte en anmodning til den model for at gøre sikker på, at du er den, du siger, du er. Modellens lignende, OK, ja, du er den, du siger, du er, så lad mig give dig dit nyhedsfeed. Jeg vil give dig de rå data for din news feed til visningen, og derefter visningen gør det smuk, behandler det på en måde at vi er vant til, visning disse oplysninger til brugeren. Bemærk den forbindelse, er ikke eksisterende på dette diagram. Der er ingen direkte forbindelse mellem dig og modellen. Der er altid denne buffer på regulatoren på indgangssiden, og der er en buffer af se på udgangssiden. Måske du er en god person og så måske du ville ikke gøre nogen skade på model, men måske er du ikke. Eller måske er der nogen, der en ondsindet bruger, der ville måske ønsker at skade din database, måske slette alt fra din database, som kunne være meget dyrt. Naturligvis, der brugerdata is-- der er værdi at have brugerdata. Og så hvis vi ikke har bragt denne buffer zone mellem brugeren og database-- brugeren og de model-- ting måske ikke går så godt for os. Og så er det vigtigt at har dette paradigme, hvor brugeren kan interagere med databasen, sikker, men de er nødt til at gå gennem os At gøre det. Og det er dybest set ideen med MVC. Det forsøger at gennemføre datasikkerhed. Det forsøger at beskytte modellen utilsigtet eller bevidst ondsindede brugere. Så hvad sker der, når vi anvender dette paradigme? Nå, vi adskille data kræves fra vores website-- Den model-- fra logikken der implementerer vores hjemmesides functionality-- den controller-- og fra de simple æstetik og side skabeloner, der omfatter vores bruger experience-- udsigten. Hvad betyder det? Tja, det betyder du kan gøre ser synlige for brugeren. Du kan skjule modellen væk. Og controllers-- brugeren kan ikke måske direkte manipulere. De behøver ikke få adgang til din PHP kode. De har brug for bare at se en formular hvor de kan skrive ting i. Så måske formen er en visning, controlleren er PHP at formen forelægger den controller gør en forespørgsel til modellen, modellen giver mere information til en anden opfattelse viser oplysninger til dig. Dine programmer kan få adgang til alle dine forretningslogik, men dine brugere kan ikke direkte adgang til din forretningslogik. Og en særlig, måske, synlige illustration af denne er du nogensinde har modtaget en 403 Forbidden fejl. Har du nogensinde gået til en web side og set 403 Forbidden? Det er lidt ligesom 404 Ikke fundet. 403 Forbidden betyder, at du forsøgte at få adgang en side, som du ikke har adgang til. Måske site er hjælp MVC adskillelse at skjule væk sin forretning logik, nødt til at eksistere på serveren, for for siden at arbejde, men ikke vil have dig til direkte adgang til den. Så du kan få en 403 Forbidden fejl. Og det ville ikke engang noget hvis du var logget ind. Ingen bruger kan røre denne dot PHP-fil. De kan kun røre denne ene, og dette en-- den, de kan måske touch-- kan interagere med den låste-down-fil mere indirekte end brugeren. Så vi nogle gange se denne tilladelser fejl, dette 403 Forbidden. Hvordan kan vi ændre tilladelser så at tingene kan eller ikke kan ses? Når vi gør det typisk er at bruge en Linux kommando kaldet chmod-- C-H-mod. For at gøre dette, formatet er temmelig simple-- chmod, tilladelser, og hvad fil, du ønsker at anvende denne ændring. Så måske du ville se noget ligesom denne-- chmod 600 helpers.php. Eller måske ville du se denne-- chmod et plus x, der omfatter bibliotek. Var betyder det dog? Så der er to forskellige måder at tilladelser er normalt anvendes ved hjælp af chmod. Den første kaldes oktal tal metode. Dette gælder normalt tilladelser til tre forskellige kategorier brugere på samme tid. Så chmod 711 fil vil give dig mulighed retten til at læse, skrive og udføre din fil, vil gøre det muligt others-- specifikt din gruppe og verden- til kun at køre filen. Det er, hvad dette kan oversættes til. Det første nummer er der er, hvad du kan gøre, det andet tal er hvad din gruppe kan gøre, og den tredje er, hvad verden kan gøre. Enhver, der er på besøg din side, det er den verden. Hvad er disse tal faktisk oversætte til selv? Så disse dybest set oversætter som denne. Hvis tilladelsen er nul, kan intet ske. Hvis det er en, kan du udføre file-- hvis det er din tilladelse. Hvis det er to, kan du skrive filen men du kan ikke gøre noget andet. Hvis det er tre, du kan skrive og udføre. Og så videre, som du kan se. Og syv betyder, at du kan gøre alt. Så hvorfor er disse kaldet oktale tal? Tja, hvis du tænker over det, her er ligesom ekspertisenet og ja'er, og hvis vi tænker over dem som røde og grønne kasser, måske det gør det lidt klarere. Men hvis vi tænker over de røde kasser som nuller og de grønne kasser som dem, disse er faktisk bare sæt af binære tal, ikke? 000 oversætter til decimal 0; 001, decimal 1; 010 er decimal 2, og så videre. Og så kalder vi disse oktal tal, fordi der er otte forskellige muligheder. Der er otte forskellige cifre, hvis vi er taler om tre bits information-- læse bit, skrive bit, og udføre bit. Så nu kan du tale binært, decimal, hex, og oktal. Så du ved, hvordan man kommunikerer med computere i fire forskellige antal systemer, så det er ret cool. Så ud over oktal tilladelse ordning, der er også den symbolske tilladelse ordning, som er lidt forskellig og som regel bliver brugt bedst at anvende eller fjerne en tilladelse over hele linjen. Så chmod et plus x-fil kan tilføje den rigtige at udføre alle tre kategorier af users-- dig selv, din gruppe, og verden. Det plus er tilsætning del. Retten til at udføre, det er x. Og det faktum, at det gælder for alle tre grupper af brugere ville være en. Så denne-- et plus x-- er sandsynligvis kommer at være præcis den samme som chmod 711 fil, for hvis du går tilbage og se på oktale tal ordningen, dem og syvere giver os ret til at udføre en fil. Så dette er sandsynligvis den samme. Og du kan bruge dette vejledning til hvad de forskellige ting i symbolske chmod-ing struktur er. De grønne punkter her ville være hvor alle de grønne farvede eksempel var en anden siden. Den blå ville være det blå. Den orange ville være orange. Så du kan anvende ting til din gruppe, til andre, til brugeren, eller til alle. Du kan give dem læse, skrive og udføre adgang, og du kan tilføje eller fjerne eller tildele præcis et sæt af tilladelser ved hjælp af denne model. Hvordan kan vi kontrollere, hvad en fil tilladelse ordningen er? Før vi ændrer det, er det sandsynligvis god til rent faktisk at vide hvad filens tilladelser er. En måde at gøre dette på er at køre ls men bare nappe det en lille smule. Så hvis jeg skriver ls Dash l-- det er et lille l-- måske Jeg vil se noget som dette. Det ser lidt kryptisk, men den del, vi virkelig bekymrer sig om er de ting på venstre derovre. Det faktisk specificerer en fil tilladelse ordning. Og du kan sandsynligvis fortælle, fordi det er fik r s, w s, og x er afbrudt. De første three-- ignorerer den første til en anden, hvilket vi vil fordoble tilbage til. De første tre efter Den first-- så den anden, tredje og fjerde tegn af denne streng 10 tegn er de tilladelser, du har. Så tilsyneladende kan jeg læse, skrive og udføre PHP. Jeg kan læse, skrive og udføre PHP webdev, og jeg kan læse og skrive test.php. Min gruppe kan gøre dette. Så tilsyneladende med PHP og PHP webdev mapper, min gruppe kan skrive til dem, men intet andet. Og verden kan ikke gøre noget. Så disse filer er ikke offentligt tilgængelige og hvis jeg forsøgte at adgang til dem, og jeg var ikke kører Apache til at gøre dem tilgængelige, så ville jeg få en 403 fejl. Det er en fiasko. Jeg forsøgte at få adgang til en fil, men jeg har ikke tilladelse til at gøre det. Og hvad er det første tegn? Nå, kan du sikkert ekstrapolere her, at d's henvise til mapper og streg betegner såkaldte "almindelige filer." Og måske du har set dette, når du har forsøgt at fjerne en fil ved hjælp rm. Du har set den kryptiske besked "fjern almindelig fil" - i dette tilfælde, det ville være test.php. Almindelig fil er bare noget det er ikke en mappe. Der er et par andre her, men generelt er du kommer til at se d's for mapper og intet for det første element. Men det er virkelig alt der er til det. Du kan kontrollere fil tilladelser der bruger ls bindestreg l, du kan ændre dem ved hjælp chmod. Og, selvfølgelig, brug these-- ændre tilladelser at håndhæve denne MVC paradigme til beskytte dataene på din hjemmeside og ikke tillade brugere at få adgang til alt, men kun de ting, de har brug for at få adgang til, for at din side at arbejde på den måde, du vil have det til at virke. Jeg er Doug Lloyd. Det er CS50.