Дъг LLOYD: Понякога когато сме програмиране правим нещата толкова често, така че често и толкова много хора направи същото idea-- или еднакви нещо, че той си има име. MVC е точно едно такова нещо. Тя се нарича парадигма за програмиране. Това е нещо като най-добри практики които са били дестилирана надолу от хора, които се опитват да направят нещо. В този случай, внедри система на страници че потребителят взаимодейства с по-сложен сайт. И това е направено така, че често това е препоръчително като стандарт че други хора може би искате да се следват, а има още много специфичен набор от начини че човек може да последва тази парадигма. Така че, MVC е парадигма, и причината ние използваме е да абстрактни далеч детайли от потребителя. Някои неща на потребителя не наистина трябва да се види. Те просто искат да имат добър потребителски опит, и ние не трябва да ги има достъп до всеки един файл, който съществува на нашия уеб сървър, може би. Може да има някои файлове, които са само използвана за укрепване на работата на потребителите, и така можем абстрактно тези, далеч. Ние можем някак да ги скрие, така че потребителят не може да работи с тях, но нашата pages-- нашата pages-- знаят как да се справят с тях и им се обадя или може би изискват, тях, или нещо подобно, което иска. Основната мотивация за MVC е сигурността на данните, защото MVC обикновено идва в контекст на работа с бази данни. И по-специално, ние Искам да попречи на потребителите от директно оказват влияние бази данни. Ние само искаме да го направим косвено, чрез нашата филтрация. Или като се уверите, че всичко е ОК, като ни прави малко на проверка за грешки или безопасността хидроизолация, преди да сме го изпраща на базата данни, когато нещата могат да се объркат, може би наистина погрешно, ако не сте внимателни. Така MVC щандове за Model View Controller. Какво всеки от тях означава? По принцип, модел е вашата база данни. Това е мястото, където всички важни данни за вашия сайт lives-- потребителски имена, данни за вход, пароли. И вие можете да го актуализира, се отнасят към него, почти всичко подобно. Човек би си задава въпроси на база данни, ще попиташ информация от базата данни. Това е model-- всички от данни, когато вашият сайт е жив. Гледката е нещо като работата на потребителя. Това е най-страниците, които виждат в те са поискали информация. Така че може би те представят тяхното влизане information-- които те биха направили в контролер, които ние ще говорим за в секунда. Те може би да представят тяхното вход информация, и базата данни се запитва. Е поискана информация и извади от базата данни. И тогава, след като влезете в сайта на потребителя в, те виждат своята начална страница. Това е цел, OK? И тогава контролера е това, което е наречена бизнес логиката на вашия сайт. И бизнес логика е един от тези термини, които е нещо като блудкаво-washy-- харесва, какво прави бизнес логика означава? По принцип вашия бизнес логика е вашата PHP. Вашето потребителско не се нуждае от директно да видите вашия PHP, но вашият PHP е може би това, което става да се прави заявки към базата данни. Така че въвеждането на потребителското воля информация в хубав изглед, които ще се интегрират по-контролер. Подобно, те ще напишете в една форма. Как това, че процесите на форма информация е контролера. Това е PHP това всъщност които са отправили искането на образеца. И тогава моделът дава информация на гледката, която той дава на потребителя, може би най визуализира, както следва. Така че ние сме тук. Тук ни е в ляво, и нашата Model View Controller парадигма договореност. Как работи? The user-- us-- прави поиска към контролера. Ние подадете информация като от HTTP форма. Въз основа на това, на контролера работа е да се уверите, че това, което потребителят е дал, не е нещо, което би навредило на модела. И така контролерът ще уверете се, че всичко е ОК. Тя ще изглежда много внимателно. Ако има някакви грешки, то ще спре неща така че потребителят не може да стигнем до модела. Но ако приемем, че всичко е OK и е валидна заявка, контролерът ще задава въпроси към model-- тя ще го помолим да предоставите информация. Моделът ще се предвиди, че информация към страница, която е цел, тя ще го предаде, че начин и след това мнение ще се пренесат на информацията поискано от модела. Така, например, ако говорим за да влезете в своя Facebook страница, например. Гледката ще бъде данните които се появиха на модела, че се отнася до вашите приятели и новините хранят или подобни неща, нали? Но ти няма да види някой друг. Вие ще бъдете getting-- така подадете заявка, влезете в model-- извинението мен, като влезете в страницата. Употребите на контролерите данните си за вход да отправи искане към модела, за да уверите, че сте, които ти казват, че са. Като на автомобила, OK, да, вие сте, които ти казват, че са, така нека да ви дам си емисия новини. Аз ще ви дам изходните данни за Вашата емисия новини на становището, и след това изгледа го прави доста, я обработва по начин, които сме свикнали, показване тази информация на потребителя. Обърнете внимание на връзката, която е Не съществува на тази схема. Няма по-директна връзка между вас и модела. Винаги има този буфер на контролера на страната вход, а има буфер на видите на изходната страна. Може би сте добър човек, и така може би ще няма да направя някоя повреда на модел, но може би не сте. Или може би има някой, който злонамерен потребител, който може би щеше Искам да увреди вашата база данни, може би изтриете всичко от вашата база данни, което може да бъде много скъпо. Очевидно е, че като потребител is-- данни има стойност като потребителските данни. И така, ако не поставя този буфер зона между потребителя и database-- потребителя и model-- неща може да не се случва толкова добре за нас. И затова е важно да се имат тази парадигма, където потребителят може да взаимодейства с база данни, разбира се, но те трябва да мине през нас да го направиш. И това е в основата на идеята с MVC. Тя се опитва да приложи на сигурността на данните. Тя се опитва да защити модела от невнимание или умишлено злонамерени потребители. Така че какво става, когато ние прилагаме тази парадигма? Е, ние сме отделяне на данните изисква от нашия website-- на model-- от логиката с които се реализират на нашия уебсайт functionality-- на controller-- и от прости естетика и страница шаблони, които съдържат ни потребителското experience-- на гледката. Какво означава това? Е, това означава, че можете да направите разглежда видими за потребителя. Можете да скриете модела кола. И controllers-- потребителя не може би пряко манипулиране. Те не се нуждаят от достъп до вашия PHP код. Те просто трябва да се види форма където те могат да объркат нещата вътре. Така че може би формата е оглед, контролерът е РНР, че формата представя, на контролер прави заявка към модела, моделът дава повече информация да са на друго мнение, че извежда информация за вас. Вашите програми да имат достъп до всички от вашия бизнес логика, но вашите потребители не могат директно достъп до вашия бизнес логика. И един особено, може би, видим илюстрация на този се някога сте получили 403 Forbidden грешка. Били ли сте някога отиде на уеб страница и видял 403 Forbidden? Това е нещо като 404 не е намерена. 403 Forbidden означава, че опит за достъп страница, която не е нужно достъп до. Може би това е сайт използване на разделяне MVC да скрие своята бизнес логика, че трябва да съществува на сървъра, за за страницата, за да работят, но не е така искам директно да го достигнете. Така че може да се получи 403 Forbidden грешка. И това не би дори и значение ако бяха влезли вътре. Нито един потребител не може да докосне тази точка PHP файл. Те могат само да се докоснат това, и това one-- този, че те могат да touch-- може би могат да си взаимодействат с заключена-надолу файл повече косвено от потребителя. Така че, ние понякога се види тази разрешения грешка, това 403 Forbidden. Как да се промени, така че разрешенията че нещата могат или не могат да се видят? Когато правим това обикновено е да се използва Linux команда нарича chmod-- C-H-мод. За да направите това, форматът е доста simple-- коригират, разрешения, и каквото файл, който искате да кандидатстват за тази промяна. Така че, може би ще видим нещо като this-- CHMOD 600 helpers.php. Или може би ще видите this-- коригират плюс х, който включва директория. Дали това означава, че няма? Така че, има два различни начина че разрешенията обикновено са нанася с коригират. Първият се нарича осмична метод номера. Това обикновено се прилага разрешения три различни категории потребители едновременно. Така коригирате 711 файл ще ви позволи правото да четат, пишат и изпълняват файла, ще позволи others-- конкретно Вашата група и world-- да се изпълни само файла. Това е, което се превежда като този. Първият номер там е това, което можете да направите, Вторият номер е това, което вашата група може да направи, а третият е какво може да направи света. Всеки, който е на посещение си страница, това е свят. Какви са тези номера всъщност превежда все пак? Така че те основно се превежда като този. Ако разрешението е нула, нищо не може да се случи. Ако това е една, можете да изпълните file-- ако това е вашето разрешение. Ако това е две, можете да напишете файла но не можете да правите нищо друго. Ако това е три, вие може да пише и изпълнява. И така нататък, както можете да видите. И седем означава, че може да направи всичко. Така че, защо са тези, наречена осмични числа? Е, ако си мислиш за него, тук е като призив и yeses, и ако си мислим за тях като червени и зелени кутии, може би това го прави малко по-ясни. Но ако се замислим за тези червени кутии като нули и зелените полета като такива, това са всъщност само комплекти на двоични числа, нали? 000 се превежда като десетична 0; 001, десетични 1; 010 е знак 2, и така нататък. И така, ние наричаме тези осмична числа, защото има са осем различни възможности. Има осем различни цифри, ако ние сме Говорим за три бита на information-- битът за четене, отписването битов, и изпълни бит. Така че сега можете да говорите двоичен, десетичен, шестнадесетичен и осмична. Така че знаете как да общуват с компютри в четири различни номера системи, така че това е много готино. Така че, освен осмична Схема за разрешение, има също символичното разрешение схема, която е малко по-различен и обикновено се използва най-добре да се прилагат или премахване на разрешение повсеместно. Така CHMOD плюс х файл може да се добави право да се изпълни и на трите категории users-- себе си, вашата група, и в света. Това е плюс добавяне част. Правото да се изпълни, това е х. А фактът, че тя се отнася за всички три групи потребители биха били по а. Така this-- плюс x-- вероятно ще да бъде точно същата като коригирате 711 файл, защото, ако се върнете назад и да Посетете схемата за осмична номер, такива и седмици ни е дават право да изпълни даден файл. Така че това е може би една и съща. И вие можете да използвате тази справочник за това, различните неща в символична коригирате-ING структура са. Зелените елементи тук биха били където всички зеления цвят на примера Беше преди секунда. Синьото ще бъде най-синьо. Портокалът ще бъде оранжево. Така че можете да приложите неща с вашия група, към другите, към потребителя, или за всички. Можете да дадете ги прочетете, пише и изпълнява достъп, и можете да добавяте или премахвате или да възложи точно набор на разрешения с използването на този модел. Как да се провери какво е Схема за разрешение файл е? Преди да можем да го променим, това е Вероятно е добре да знаете, всъщност какво файла за достъп са. Един от начините да направите това е да тичам ли но просто го малко ощипвам. Така че, ако пиша ли се втурват l-- това е може би само с малки букви l-- Ще видя нещо подобно. Това изглежда малко загадъчен, но частта, която ние наистина се грижи за е нещата в ляво там. Това всъщност уточнява, схема разрешение файл. И най-вероятно може да каже, защото това е имам R е, w, а х е разпръсната. Тези първи three-- игнориране на първия за секунда, което ние ще се удвои обратно. Тези първи три след на first-- така втората, трето и четвърто символи на тази струна 10 герой са разрешенията, които имате. Така че очевидно мога да чета, пише и изпълнява PHP. Мога да четат, пишат и изпълнява PHP WebDev, и аз мога да чета и пиша test.php. Моята група може да направи това. Така че очевидно с PHP и PHP WebDev директории, моята група може да напише тях, но нищо друго. И светът не може да направи нищо. Така че тези файлове не са публично достъпна и ако аз се опитах да достъп до тях и аз не бях използвате Apache да ги направят достъпни, тогава аз ще получавам грешка 403. Това е провал. Опитах се да се достъп до файл, но аз не разполагат с разрешения, за да го направя. И това, което е, че първият герой? Е, вероятно можете да се екстраполира Тук че d'те се отнасят до директории и на таблото се отнася до така наречените "редовни файлове." И може би сте виждали това, когато сте Опитах се да изтриете даден файл, използвайки РМ. Вие сте виждали загадъчното съобщение "премахнете обикновен файл" - в този случай, че ще бъде test.php. Редовен файл е просто нещо това не е директория. Има няколко на другите тук, но като цяло сте Ще видите d'ите за директории и нищо за първия елемент. Но това е наистина всичко там е до него. Можете да проверите файла разрешения с използването ли пробив л, можете да ги промените, използвайки коригират. И, разбира се, да се използва these-- промяна на разрешенията да наложат тази парадигма MVC да защита на данните на вашия сайт и не позволи на потребителите достъп до всичко, но само неща, които те се нуждаят за достъп, за да може вашата страница да работят така, както искате го да работи. Аз съм Дъг Лойд. Това е CS50.