DOUG LLOYD: Manchmal wenn wir die Programmierung wir Dinge tun, so allgemein, so Häufig, und so viele Leute das Gleiche tun idea-- oder die gleiche Sache, dass es einen Namen hat. MVC ist genau eine solche Sache. Es nennt sich Programmierparadigma. Es ist wie eine Art Best Practices , die nach unten destilliert haben von Menschen, die versuchen, etwas zu tun. In diesem Fall implementieren eine Systemseiten dass ein Benutzer arbeitet, auf einem komplexeren Website. Und es ist so allgemein, dass getan es ist als Standard empfohlen dass andere Menschen vielleicht gefallen zu folgen, und es gibt eine Reihe von sehr spezifischen Möglichkeiten dass man dieses Paradigma folgen konnte. So ist MVC Paradigma, und der Grund Wir verwenden es ist, abstrahieren Details von dem Benutzer. Einige Dinge, die der Benutzer nicht wirklich brauchen, um zu sehen. Sie wollen einfach nur haben eine gute User Experience, und wir müssen nicht, sie zu haben Zugriff auf jede einzelne Datei, existiert auf unserem Web-Server, vielleicht. Es könnte einige Dateien, die sind einfach sein verwendet werden, um die Benutzererfahrung zu stärken, Und so können wir abstrakte diejenigen entfernt. Wir können Art verstecken sie so der Benutzer kann nicht mit ihnen zu arbeiten, aber unsere pages-- unseren pages-- wissen, wie man mit ihnen umgehen und nennen sie oder vielleicht benötigen, will, dass sie, oder so ähnlich. Die primäre Motivation für MVC ist die Datensicherheit, weil MVC kommt in der Regel bis in die Kontext der Arbeit mit Datenbanken. Insbesondere wir wollen verhindern, dass Benutzer vom direkten Einfluss auf Datenbanken. Wir wollen nur indirekt zu tun, über unser Filtration. Oder dafür sorgen, dass alles durch OK uns tut ein wenig Fehlerprüfung oder Sicherheits Proofing, bevor wir schicken Sie es an die Datenbank, in der Dinge schief gehen könnte, vielleicht wirklich falsch, wenn wir nicht aufpassen. So MVC steht für Model View Controller. Was muss jeder von ihnen das? Im Grunde ist das Modell Ihrer Datenbank. Es ist, wo die ganze Wichtige Daten für Ihre Website lives-- Benutzernamen, Benutzernamen, Passwörter. Und Sie können sie aktualisieren, beziehen sich darauf, so ziemlich alles so. Sie würden eine Datenbank abfragen, Sie bitten würde Informationen aus der Datenbank. Das ist die model-- alle der Daten, wo Ihre Website lebt. Die Aussicht ist eine Art, wie die User Experience. Es sind die Seiten, die sie nach dem zu sehen sie haben Informationen angefordert. Also vielleicht haben sie einreichen ihre Anmelde information-- die sie in einer Steuereinheit zu tun würde, was wir darüber in einem zweiten Gespräch. Sie vielleicht reichen ihre Login-Daten, und die Datenbank abgefragt wird. Informationen angefordert und aus der Datenbank abgerufen. Und dann, wenn der Benutzer protokolliert in, sehen sie ihre Homepage. Das ist eine Ansicht, OK? Und dann der Controller ist, was nannte die Geschäftslogik Ihrer Website. Und Geschäftslogik ist einer jener Begriffe, ist eine Art wishy-washy-- mögen, Was bedeutet Business-Logik das? Grundsätzlich Ihr Unternehmen Logik ist Ihre PHP. Ihr Benutzer muss nicht direkt sehen, Ihr PHP, aber Ihr PHP ist wahrscheinlich, was los ist zu werden Anfragen an die Datenbank. So wird der Benutzer Eingabe Informationen in einer Ansicht, das wird eine Steuerung zu integrieren. Wie werden sie in eine Form zu geben. Wie diese Form Prozesse Information ist der Controller. Das ist die PHP, die tatsächlich ist , der die Anforderung zum Modell. Und dann das Modell gibt Informationen zu der Ansicht, das es dem Benutzer ermöglicht, vielleicht am besten wie folgt visualisiert. So hier sind wir. Hier ist uns auf der linken Seite, und unser Modell View-Controller-Paradigma Anordnung. Wie funktioniert das? Die user-- us-- macht ein an den Controller. Wir unterbreiten Informationen wie von einem HTTP-Form. Bezogen auf daß die Steuerung Aufgabe ist es, sicherzustellen, dass daß das, was der Benutzer angegeben hat, nicht etwas, das das Modell beschädigen würde. Und so ist die Steuerung zu gehen um sicherzustellen, dass alles funktioniert. Es wird sehr genau hinschauen. Wenn es irgendwelche Fehler, wird es die Dinge zu stoppen so dass der Benutzer nicht auf das Modell zu erhalten. Aber angenommen, alles OK und es ist eine gültige Abfrage, die Steuerung die model-- abzufragen es wird es bitten, Informationen zu liefern. Das Modell wird vorsehen, dass Informationen zu einer Seite, die eine Ansicht ist, es wird es, dass zu übertragen Weise und dann die Sicht werden die Informationen zu füllen aus dem Modell angefordert. So, zum Beispiel, wenn wir sprechen über die Anmeldung in Ihrem Facebook-Seite, beispielsweise. Die Ansicht würden die Daten sein, dass aus dem Modell kam, dass bezieht sich auf Ihre Freunde und den Nachrichten füttern oder so was, oder? Aber Sie sehen, würde jemand anderes. Sie würden so getting-- werden Sie senden Sie eine Anfrage, Sie zum model-- Entschuldigung anmelden mir, loggen Sie zur Seite. Die Steuerung verwendet Ihre Login-Daten um eine Anfrage an das Modell zu machen, um Sie sicher, dass Sie, wer Sie sagen, Sie sind. Das Modell, wie, OK, ja, Sie, wer Sie sagen, Sie sind, so lassen Sie mich Ihnen Ihre News-Feed. Ich werde Ihnen die Rohdaten für geben Ihre News-Feed zu der Ansicht, und dann die Aussicht macht es hübsch, verarbeitet sie in einer Weise, dass wir um, die Anzeige verwendet, dass Informationen an den Benutzer. Beachten Sie die Verbindung, die ist nicht in diesem Diagramm existiert. Es gibt keine direkte Verbindung zwischen Ihnen und dem Modell. Es gibt immer diese Puffer der Controller auf der Eingangsseite, und es gibt einen Puffer des Aussicht auf der Ausgangsseite. Vielleicht haben Sie ein gutes sind Person, und so vielleicht haben Sie würde eine Beschädigung der nicht Modell, aber vielleicht bist du nicht. Oder vielleicht gibt es jemanden, der ein böswilliger Benutzer, der vielleicht hätte wollen Ihre Datenbank beschädigen, vielleicht alles löschen aus Ihrer Datenbank, die sehr teuer sein kann. Offensichtlich mit Benutzerdaten ist-- gibt es Wert mit Benutzerdaten. Und so, wenn wir nicht setzen diese Puffer Zone zwischen dem Benutzer und dem database-- der Benutzer und die model-- Dinge vielleicht nicht so gut läuft werden für uns. Und so ist es wichtig, haben dieses Paradigma, wo der Benutzer kann mit der Datenbank zu kommunizieren, sicher, aber sie müssen durch uns gehen es zu tun. Und das ist im Grunde die Idee mit MVC. Es versucht, die Datensicherheit zu implementieren. Es wird versucht, das Modell zu schützen versehentlich oder absichtlich böswillige Benutzer. Also, was passiert, wenn wir dieses Paradigma bewerben? Nun, wir trennen die Daten von unserer website-- erforderlich die model-- von der Logik daß implementiert unsere Website functionality-- die controller-- und von der einfachen Ästhetik und Seite Vorlagen, umfassen unsere Benutzer experience-- die Aussicht. Was bedeutet das? Na ja, bedeutet dies, die Sie machen können Blick auf den Benutzer sichtbar. Sie können das Modell verstecken. Und controllers-- den Benutzer kann nicht vielleicht direkt zu manipulieren. Sie müssen nicht um Ihre PHP-Code zugreifen. Sie müssen nur ein Formular zu sehen wo sie Sachen in eingeben können. Also vielleicht die Form eine Ansicht, die Steuerung PHP ist die, dass das Formular sendet, um die Controller macht eine Anfrage an das Modell, Das Modell enthält mehr Informationen zu einer anderen Ansicht, dass zeigt Informationen zu Ihnen. Ihre Programme zugreifen können, alle Ihre Business-Logik, aber die Benutzer können nicht direkt Zugriff auf Ihre Geschäftslogik. Und einer besonders, vielleicht, sichtbares Beispiel dafür wird Sie je erhalten haben ein 403 Forbidden Fehler. Haben Sie schon einmal an einen Web-weg Seite und gesehen 403 Forbidden? Es ist irgendwie wie 404 nicht gefunden. 403 Forbidden bedeutet, dass Sie versucht, zuzugreifen eine Seite, die Sie keinen Zugriff haben. Vielleicht Website hat mit MVC Trennung seine Geschäftslogik verstecken, dass muss auf dem Server, um existieren für die Seite zu arbeiten, aber nicht möchten, dass Sie direkt darauf zugreifen. So dass Sie einen 403 Forbidden Fehler erhalten könnte. Und es wäre nicht einmal eine Rolle, wenn Sie eingeloggt sind. Kein Benutzer kann diese Punkt PHP-Datei zu berühren. Sie können nur zu berühren diese, und dies one-- diejenige, die sie vielleicht touch-- kann kann mit der gesperrten Datei interagieren, eher indirekt als den Benutzer. Also, wir sehen manchmal Berechtigungen Fehler, dies 403 Forbidden. Wie können wir die Berechtigungen so ändern dass die Dinge oder nicht gesehen werden kann? Wenn wir dies tun in der Regel ist es, eine zu verwenden Linux Befehl namens chmod-- C-H-mod. Um dies zu tun, ist das Format ziemlich simple-- chmod, Berechtigungen und was auch immer Sie die gewünschte Datei um diese Änderung zu beantragen. Also, vielleicht möchten Sie etwas sehen wie this-- chmod 600 helpers.php. Oder vielleicht sind Sie this-- chmod sehen würden, a plus x, das Verzeichnis enthält. War bedeutet das eigentlich? Also, es gibt zwei verschiedene Arten dass Berechtigungen sind in der Regel angewendet mit chmod. Die erste wird als Oktalzahlen Methode. Dies gilt in der Regel Berechtigungen In den drei verschiedenen Kategorien der Nutzer gleichzeitig. So chmod 711 Datei würden Sie erlauben das Recht zum Lesen, Schreiben und Ausführen Ihre Datei, würde es ermöglichen, Andere-- spezifisch Ihre Gruppe und die world-- nur führen Sie die Datei. Das ist, was diese übersetzt. Die erste Zahl gibt ist das, was Sie tun können, die zweite Zahl ist was Ihre Gruppe tun können, und die dritte ist, was die Welt machen kann. Jeder, der ist den Besuch Ihrer Seite, das ist die Welt. Was sind diese Zahlen tatsächlich zu übersetzen, obwohl? Das sind also im Grunde zu übersetzen wie diese. Wenn die Berechtigung ist Null ist, kann nichts passieren. Wenn es sich um einen, können Sie das ausführen file-- wenn es das ist Ihre Erlaubnis. Wenn es zwei, können Sie die Datei zu schreiben aber Sie können nichts anderes tun. Wenn es drei, die Sie kann schreiben und ausführen. Und so weiter, wie Sie sehen können. Und sieben bedeutet, dass Sie alles tun können. Warum also werden diese genannt Oktalzahlen? Nun, wenn man darüber nachdenkt, hier ist wie Neins und Jas, und wenn wir über sie denken wie rot und grün-Boxen, vielleicht macht es ein wenig klarer. Aber wenn wir über jene roten Kästen denken als Nullen und die grünen Felder wie diejenigen, diese sind eigentlich nur Sätze von binären Zahlen, nicht wahr? 000 übersetzt 0 Dezimal; 001, Dezimal 1; 010 ist dezimal 2, und so weiter. Und so haben wir diese Oktal nennen Zahlen, da es acht verschiedene Möglichkeiten. Es gibt acht verschiedene Ziffern, wenn wir reden über drei Bits information-- Die Lese-Bit, das Schreib Bit und das Ausführungs-Bit. So, jetzt können Sie sprechen Binary, dezimal, hex und Oktal. So dass Sie wissen, wie die Kommunikation mit Computern in vier Zahlen Systeme, so das ist ziemlich cool. Also, neben der Oktal Berechtigungsschema, es gibt auch der symbolische Erlaubnis Regelung, die etwas anders ist und in der Regel wird am besten verwendet werden, um an oder Entfernen einer Genehmigung durch die Bank. So chmod ein Plus x-Datei könnte das Recht hinzufügen auf alle drei ausführen Kategorien von users-- sich selbst, Ihre Gruppe, und die Welt. Das Plus ist die Zugabe von Teil. Das Recht ausgeführt werden kann, das ist die x. Und die Tatsache, dass es gilt für alle drei Gruppen von Benutzern wäre das eine zu sein. So this-- ein Plus x-- ist wahrscheinlich um genau die gleiche wie chmod 711 sein Datei, weil, wenn Sie zurückgehen und Blick auf die Oktalzahl Schema, Einsen und Siebener geben Sie die Recht, eine Datei auszuführen. So ist dies wahrscheinlich das gleiche. Und Sie können dies nutzen Referenzhandbuch für das, was die verschiedenen Dinge in der symbolische chmod-ing-Struktur sind. Hier die grünen Einzelteile würden wo all die grün gefärbten beispiels war vor einer Sekunde. Die blaue würde die blau sein. Die orange würde die orange. So können Sie die Dinge zu übernehmen Sie Gruppe für andere, an den Benutzer, oder für jedermann. Sie können sie zu lesen geben, zu schreiben, und Ausführungszugriff, und Sie können hinzufügen oder entfernen oder genau einen Satz zuordnen Berechtigungen mit diesem Modell. Wie können wir überprüfen, was ein Dateiberechtigungsschema ist? Bevor wir es ändern, es ist wahrscheinlich gut, um wirklich wissen, was die Dateiberechtigungen sind. Eine Möglichkeit, dies zu tun ist, ls laufen aber gerade zwicken sie ein wenig. Also, wenn ich ls Strich L-- das ist eine Klein L-- vielleicht Ich werde etwas so zu sehen. Es sieht ein wenig kryptisch, aber der Teil, der wir uns wirklich für ist der Stoff auf der linken drüben. Dass tatsächlich gibt ein Dateiberechtigungsschema. Und man kann wahrscheinlich sagen, weil es stand R, w ist, und x ist durchsetzt. Jene ersten three-- ohne auf die erste für eine zweite, die wir kommen wieder zu verdoppeln. Jene ersten drei nach die first-- so die zweite, dritte und vierte Zeichen dieser 10 Zeichenkette sind die Berechtigungen, die Sie haben. So scheinbar Ich kann lesen, Schreiben und Ausführen von PHP. Ich kann lesen, schreiben, und auszuführen PHP WebDev, und ich kann lesen und schreiben test.php. Meine Fraktion kann dies tun. So scheinbar mit der PHP- und PHP WebDev Verzeichnisse meine Fraktion zu schreiben ihnen aber sonst nichts. Und die Welt kann nichts tun. Also diese Dateien nicht öffentlich zugänglich und wenn ich versuchte, Zugang zu ihnen und ich war nicht Apache zugänglich zu machen, dann würde ich einen 403 Fehler. Es ist ein Misserfolg. Ich habe versucht, auf eine Datei zuzugreifen, aber ich nicht berechtigt, es zu tun. Und was ist das erste Zeichen? Nun, haben Sie wahrscheinlich zu extrapolieren kann hier, dass die d's beziehen sich auf Verzeichnisse und der Strich bezieht sich auf so genannte "normale Dateien." Und vielleicht haben Sie diese gesehen habe, wenn du hast versucht, eine Datei mit rm zu entfernen. Sie haben die kryptische Nachricht gesehen "entfernen reguläre Datei" - in diesem Fall, es wäre test.php sein. Regular-Datei ist nur etwas, das ist kein Verzeichnis. Es gibt ein paar andere hier, aber im Allgemeinen sind Sie werde sehen, d's für Verzeichnisse und nichts für das erste Element. Aber das ist wirklich alles dort ist zu ihm. Sie können Datei zu überprüfen Berechtigungen mit ls Strich l, Sie können sie mit chmod ändern. Und natürlich verwenden these-- Ändern Sie die Berechtigungen um dieses MVC-Paradigma durchzusetzen Schutz der Daten auf Ihrer Webseite und nicht den Benutzern ermöglichen um alles zugreifen, sondern nur die Sachen, die sie benötigen, um damit Ihre Seite zuzugreifen um die Art und Weise Sie es an die Arbeit wollen arbeiten. Ich bin Doug Lloyd. Dies ist CS50.