DOUG LLOYD: Parfois lorsque nous programmation nous faisons les choses si souvent, de sorte fréquemment, et tant de gens faire la même chose ou le même idea-- chose qu'il a un nom. MVC est exactement une telle chose. Il a appelé un paradigme de programmation. Il est comme une sorte de meilleures pratiques qui ont été distillée bas par des personnes essayant de faire quelque chose. Dans ce cas, la mise en œuvre un système de pages ce qu 'un utilisateur interagit avec sur un site plus complexe. Et il l'a fait si souvent que il est recommandé comme standard que d'autres personnes aimeraient suivre, et il ya un ensemble très précis de façons que l'on pourrait suivre ce paradigme. Donc, MVC est un paradigme, et le motif nous utilisons, il est aux détails abstraits loin à partir de l'utilisateur. Certaines choses l'utilisateur n'a pas vraiment besoin de voir. Ils veulent juste avoir une bonne expérience utilisateur, et on n'a pas besoin de les avoir accéder à chaque fichier unique existe sur notre serveur, peut-être. Il pourrait y avoir certains fichiers qui sont juste utilisé pour renforcer l'expérience utilisateur, et ainsi nous pouvons abstraite ceux qui sont loin. Nous pouvons sorte de les cacher afin l'utilisateur ne peut pas travailler avec eux, mais notre pages-- notre pages-- savoir comment traiter avec eux et de les appeler ou exiger peut-être, veut eux, ou quelque chose comme ça. La principale motivation pour MVC est la sécurité des données, parce MVC survient généralement dans le contexte de travail avec les bases de données. Et en particulier nous veulent empêcher les utilisateurs des bases de données qui influent directement. Nous voulons seulement faire indirectement, grâce à notre filtration. Ou faire en sorte que tout est OK par nous faire un peu de vérification des erreurs ou l'épreuvage de sécurité avant envoyer à la base de données, où les choses pourraient aller mal, peut-être vraiment mal, si nous ne faisons pas attention. Donc MVC signifie Model View Controller. Qu'est-ce que chacun de ces signifie? Fondamentalement, le modèle est votre base de données. Il est où tous les des données importantes pour votre site les noms d'utilisateurs, des logins lives--, mots de passe. Et vous pouvez le mettre à jour, reportez-vous à elle, à peu près tout comme ça. Vous souhaitez interroger une base de données, vous poseriez informations de la base de données. Voilà le modèle-- tout le données où vit votre site. La vue est un peu comme l'expérience de l'utilisateur. Ce sont les pages qu'ils voient après ils ont demandé des informations. Alors peut-être qu'ils soumettent leur connexion information-- dont ils feraient dans un contrôleur, dont nous parlerons dans un instant. Ils soutiennent peut-être leur Informations de connexion, et la base de données est interrogée. L'information est demandé et tiré de la base de données. Et puis une fois l'utilisateur connecté de , ils voient leur page d'accueil. Voilà une vue, OK? Et puis le contrôleur est ce qui est appelé la logique métier de votre site. Et la logique métier est l'un de ces termes qui est une sorte de wishy-washy-- voulez, qu'est-ce que la logique métier signifie? Fondamentalement votre entreprise logique est votre PHP. Votre utilisateur n'a pas besoin pour voir directement votre PHP, mais votre PHP est probablement ce qui se passe à faire des demandes à la base de données. Donc, l'entrée d'utilisateur volonté informations dans une vue, qui intégrera un contrôleur. Comme, ils vont taper dans un formulaire. Comment que les processus de forme l'information est l'unité de commande. Voilà le PHP qui est en fait en fait la demande au modèle. Et puis le modèle donne informations à la vue, ce qui lui donne à l'utilisateur, peut-être mieux visualisé comme suit. Donc nous sommes ici. Ici nous est sur la gauche, et notre modèle View Controller agencement de paradigme. Comment cela fonctionne t-il? Le us-- user-- fait une demander au contrôleur. Nous soumettons informations par exemple par un formulaire HTTP. Sur cette base, le contrôleur de travail est de faire en sorte que ce que l'utilisateur a donné est pas quelque chose qui pourrait endommager le modèle. Et si le contrôleur va assurez-vous que tout est OK. Il va examiner très attentivement. Si il ya des erreurs, il va arrêter les choses afin que l'utilisateur ne peut pas obtenir le modèle. Mais tout est en supposant OK et il est une requête valide, le contrôleur interroge le modèle-- il va lui demander de fournir des informations. Le modèle prévoira que informations à une page qui est une vue, il va transmettre que Ainsi, et alors la vue garnira l'information demandé depuis le modèle. Ainsi, par exemple, si nous parlons à propos de la connexion à votre page Facebook, par example. La vue serait les données qui est sorti du modèle qui se réfère à vos amis et les nouvelles nourrir ou des trucs comme ça, non? Mais vous ne verriez pas de quelqu'un d'autre. Vous seriez donc getting-- vous soumettez une requête, vous vous connectez à l'excuse modèle-- moi, vous vous connectez à la page. Les utilisations du contrôleur vos informations de connexion de faire une demande pour le modèle à faire vous que vous êtes qui vous dites que vous êtes. La comme du modèle, OK, oui, vous êtes qui vous dites que vous êtes, alors permettez-moi de vous donner votre fil de nouvelles. Je vais vous donner les données brutes pour votre fil de nouvelles à la vue, puis la vue rend jolie, les traite d'une manière que nous sommes habitués, affichant que l'information à l'utilisateur. Notez que la connexion est ne pas exister sur ce schéma. Il ya pas de lien direct entre vous et le modèle. Il ya toujours ce tampon de le contrôleur du côté d'entrée, et il ya un tampon de la voir sur le côté de sortie. Peut-être que vous êtes un bon personne, et ainsi peut-être vous ne ferait pas tout dommage à la modèle, mais peut-être que vous n'êtes pas. Ou peut-être il ya quelqu'un qui est un utilisateur malveillant qui serait peut-être vouloir endommager votre base de données, peut-être tout supprimer de votre base de données, ce qui pourrait être très coûteux. Évidemment, ayant données utilisateur est-- il ya de la valeur à avoir les données utilisateur. Et si nous ne mettons pas ce tampon zone située entre l'utilisateur et le database-- l'utilisateur et les choses modèle-- pourrait ne pas aller si bien pour nous. Et donc il est important de cette paradigme où l'utilisateur peut interagir avec la base de données, bien sûr, mais ils doivent passer par nous pour le faire. Et qui est fondamentalement l'idée avec MVC. Il essaie de mettre en œuvre la sécurité des données. Il essaie de protéger le modèle à partir par inadvertance ou intentionnellement des utilisateurs malveillants. Donc ce qui arrive quand nous appliquons ce paradigme? Eh bien, nous allons séparer les données nécessaire de notre website-- l'modèle-- de la logique qui met en oeuvre notre site web functionality-- l'controller-- et de l'esthétique et simples la page modèles qui composent notre utilisateur experience-- la vue. Qu'est-ce que cela signifie? Eh bien, cela signifie que vous pouvez faire considère visible à l'utilisateur. Vous pouvez masquer le modèle de distance. Et l'utilisateur controllers-- peut-être ne peut pas manipuler directement. Ils ne doivent pas accéder à votre code PHP. Ils ont juste besoin de voir une forme où ils peuvent taper des choses dans. Alors peut-être la forme est une vue, le contrôleur est le PHP que la forme se soumet à la contrôleur fait une requête pour le modèle, le modèle donne plus d'informations à un point de vue différent que affiche les informations pour vous. Vos programmes peuvent accéder tout votre logique métier, mais vos utilisateurs ne peuvent pas directement accéder à votre logique métier. Et un particulier, peut-être, illustration visible de cette est que vous avez déjà reçu une erreur 403 Forbidden. Avez-vous déjà allé à un web la page et vu 403 interdit? Il est un peu comme 404 Not Found. 403 Forbidden signifie que vous avez essayé d'accéder une page que vous ne disposez pas d'accès. Peut-être que ce site est utilisant MVC séparation à cacher sa logique d'entreprise qui doit exister sur le serveur afin pour la page de travailler, mais ne le fait pas voulez-vous d'accéder directement à elle. Donc, vous pourriez obtenir une erreur 403 Forbidden. Et il serait même pas d'importance si vous étiez connecté. Aucun utilisateur ne peut toucher ce fichier PHP dot. Ils ne peuvent toucher celui-ci, et ce One-- celui qu'ils peuvent peut-être touch-- peuvent interagir avec le fichier verrouillé plus indirecte que l'utilisateur. Donc, nous voyons parfois ces autorisations erreur, cette 403 Forbidden. Comment pouvons-nous changer les permissions afin que les choses peuvent ou ne peuvent pas être vus? Lorsque nous faisons cela est généralement d'utiliser un Les commandes de Linux appelé chmod-- C-H-mod. Pour ce faire, le format est assez simple-- chmod, les autorisations, et tout fichier que vous voulez d'appliquer cette modification. Donc, peut-être vous voyez quelque chose comme this-- chmod 600 helpers.php. Ou peut-être vous verriez this-- chmod un plus x qui comprend répertoire. Était-ce que cela signifie si? Donc, il ya deux manières différentes que les autorisations sont habituellement appliquée avec la commande chmod. Le premier est appelé octal méthode des nombres. Cela vaut habituellement autorisations à trois catégories différentes d'utilisateurs en même temps. Donc chmod 711 fichier que vous permettez le droit de lire, écrire et exécuter votre fichier, permettrait others-- spécifiquement votre groupe et le monde-- pour exécuter uniquement le fichier. Voilà ce que cela se traduit. Le premier numéro il est ce que vous pouvez faire, le deuxième nombre est ce que votre groupe peut faire, et le troisième est ce que le monde peut le faire. Quiconque est de visiter votre la page, qui est le monde. Quels sont ces numéros fait traduire si? Donc, ce traduisent essentiellement comme suit. Si l'autorisation est zéro, rien ne peut arriver. Si il est un, vous pouvez exécuter la file-- si cela est votre permission. Si elle est deux, vous pouvez écrire le fichier mais vous ne pouvez rien faire d'autre. Si il est trois, vous peut écrire et exécuter. Et ainsi de suite, comme vous pouvez le voir. Et sept signifie que vous pouvez tout faire. Alors, pourquoi sont-ils appelés nombres octaux? Eh bien, si vous pensez cela, voici comme des chutes de neige et des oui, et si nous pensons à eux comme des boîtes rouges et verts, peut-être qui le rend un peu plus clair. Mais si nous pensons à ces boîtes rouges sous forme de zéros et les cases vertes que celles, ce sont en fait que des ensembles de nombres binaires, non? 000 se traduit en décimal 0; 001, une décimale; 010 décimal est 2, et ainsi de suite. Et donc nous appelons ces octal numéros, car il sont huit possibilités différentes. Il ya huit des chiffres différents si nous sommes parler de trois bits de information-- le bit de lecture, l'écriture bit, et le bit exécuter. Alors maintenant, vous pouvez parler binaire, décimal, hexadécimal, octal. Donc, vous savez comment communiquer avec ordinateurs dans quatre nombre différent systèmes, de sorte que est plutôt cool. Ainsi, outre le octal régime d'autorisation, il est également l'autorisation symbolique régime, qui est légèrement différente et est habituellement utilisé préférable d'appliquer ou supprimer une permission à travers le conseil d'administration. Donc chmod un fichier de plus de x pourrait ajouter la bonne à exécuter à chacun des trois catégories de users-- vous-même, votre groupe, et le monde. Ce plus est la partie ajoutant. Le droit d'exécuter, qui est le x. Et le fait que il applique à tous les trois groupes d'utilisateurs seraient l'un. Donc this-- un x-- PLUS va probablement être exactement le même que chmod 711 déposer, parce que si vous revenez en arrière et regarder le schéma de nombre octal, ceux et Sevens nous la donnent droit d'exécuter un fichier. Donc, ce qui est probablement la même chose. Et vous pouvez utiliser cette guide de référence pour ce qui les diverses choses dans le la structure chmod-ing symbolique sont. Les objets verts seraient ici où tous l'exemple de couleur verte était il ya une seconde. Le bleu serait le bleu. L'orange serait l'orange. Donc, vous pouvez appliquer choses à votre groupe, pour les autres, à l'utilisateur, ou à tout le monde. Vous pouvez donner les lisent, écrire et exécuter l'accès, et vous pouvez ajouter ou supprimer ou assigner exactement un ensemble autorisations à l'aide de ce modèle. Comment vérifions-nous quel régime d'autorisation de fichier est? Avant de nous changeons, il est sans doute bon de savoir réellement ce que les autorisations de fichier sont. Une façon de faire cela est de lancer ls mais juste ruser un peu. Donc, si je tape ls se précipitent L-- qui est peut-être un minuscule L-- Je vais voir quelque chose comme ça. Il ressemble un peu cryptique, mais la partie qui nous nous soucions vraiment est la substance sur la gauche là-bas. Qui spécifie effectivement un régime d'autorisation de fichier. Et vous pouvez dire probablement parce qu'il est obtenu r, w de, et x de intercalés. Ceux premier three-- en ignorant le premier pendant une seconde, qui nous doublerons revenir. Ceux trois premiers après l'first-- de sorte que le deuxième, troisième et quatrième caractères de cette chaîne de 10 caractères sont les autorisations que vous avez. Donc, apparemment, je peux lire, écrire et exécuter PHP. Je peux lire, écrire, et exécuter PHP WebDev, et je peux lire et écrire test.php. Mon groupe peut le faire. Donc, apparemment avec le PHP et répertoires PHP WebDev, mon groupe peut écrire eux, mais rien d'autre. Et le monde ne peut rien faire. Ainsi, ces fichiers ne sont pas accessible au public et si je tentais de accéder à eux et je ne suis pas exécutant Apache pour les rendre accessibles, puis je obtenir une erreur 403. Il est un échec. Je essayé d'accéder à un fichier mais je ne dispose pas des autorisations pour le faire. Et quel est ce premier caractère? Eh bien, vous pouvez probablement extrapoler ici que le s d'référer à des répertoires et le tableau de bord se réfère à dite "des fichiers réguliers." Et peut-être vous avez vu cette lorsque vous avez essayé de supprimer un fichier en utilisant rm. Vous avez vu le message cryptique "supprimer le fichier régulier» - dans ce cas, ce serait test.php. Fichier régulier est juste quelque chose ce ne est pas un répertoire. Il ya un couple d'autres ici, mais généralement, vous êtes allez voir d's pour les répertoires et rien pour le premier élément. Mais cela est vraiment tout ce qu'il ya à faire. Vous pouvez vérifier le fichier autorisations à l'aide ls tableau de bord, l vous pouvez les modifier à l'aide chmod. Et, bien sûr, utiliser these-- changer les autorisations d'appliquer ce paradigme MVC protéger les données sur votre site et ne pas laisser les utilisateurs pour accéder à tout, mais seulement les choses dont ils ont besoin pour accéder dans l'ordre de votre page de travailler la façon dont vous voulez qu'il fonctionne. Je suis Doug Lloyd. Ceci est CS50.