DOUG LLOYD: Czasami gdy jesteśmy programowania robimy rzeczy tak często, więc często i tak wiele osób zrobić to samo idea-- lub taka sama rzeczą, że ma imię. MVC jest właśnie jednym z takich rzeczy. To się nazywa paradygmat programowania. To coś w rodzaju dobrych praktyk które zostały destylowana dół przez ludzi, którzy próbują coś zrobić. W tym przypadku wdrożenia System stron że użytkownik oddziałuje w bardziej złożonej strony. I to się robi tak często, że zaleca jako standard że inni ludzie mogą chcieć podążać, i jest bardzo specyficzny zestaw sposobów że można było obserwować tą paradygmat. Tak, jest paradygmatem MVC, a powodem używamy jest do abstrakcyjnych dala szczegółów od użytkownika. Niektóre rzeczy, które użytkownik nie naprawdę trzeba zobaczyć. Oni po prostu chcą mieć dobre doświadczenie użytkownika, i nie musimy je mieć dostęp do każdego z plików, które istnieje na naszym serwerze WWW, być może. Nie może być niektóre pliki, które są po prostu stosowany w celu wzmocnienia doświadczenia użytkownika, i tak możemy abstrakcyjne ci się. Możemy rodzaju ukryć je tak, użytkownik nie może pracować z nimi, ale nasze pages-- naszą pages-- wiedzą, jak sobie z nimi radzić i nazywają je, a może wymagać, chce je, czy coś takiego. Główną motywacją dla MVC jest bezpieczeństwo danych, bo MVC zwykle pojawia się w kontekst pracy z bazami danych. W szczególności my Aby uniemożliwić użytkownikom z bezpośrednio wpływających baz danych. Chcemy tylko, aby zrobić to w sposób pośredni, za pośrednictwem naszego filtracji. Lub upewniając się, że wszystko jest w porządku przez nam robi trochę sprawdzania błędów lub korekty bezpieczeństwa, zanim wysłać je do bazy danych, gdzie rzeczy może pójść nie tak, być może bardzo źle, jeśli nie jesteś ostrożny. MVC stoi więc na widok modelu kontrolera. Co każdy z nich oznacza? Zasadniczo, model jest baza danych. To gdzie wszystko ważne dane na swojej stronie lives-- nazwy użytkownika, loginów. I można go uaktualnić, odnoszą się do niego, prawie wszystko tak. Chcesz kwerendy bazy danych, można by zapytać, informacje z bazy danych. To jest model-- wszystkie z Dane gdzie witryna żyje. Widok jest tak jakby doświadczenie użytkownika. To strony widzą po zażądały informacji. Więc może złożyć ich logowania information-- co robią w sterowniku, które będziemy rozmawiać o w drugim. Oni może przedstawić swoje Zaloguj się informacje, a baza danych jest kwerenda. Informacja jest wymagana, a wyciągnął z bazy danych. I wtedy, gdy użytkownik pod zalogowany w, widzą swoją stronę główną. To widok, OK? A następnie sterownik jest co zwana logika biznesowa witryny. A logika biznesowa jest jedno z tych pojęć, które jest rodzajem wishy-washy-- podoba, co to logika biznesowa oznacza? Zasadniczo Twoja firma Logika jest Twój PHP. Twój użytkownik nie musi bezpośrednio zobaczyć swój PHP, ale twój PHP jest prawdopodobnie co się dzieje do tworzenia zapytań do bazy danych. Więc wejście wola użytkownika informacje w widoku, która połączy kontroler. Jak, oni wpisać do formularza. Jak że procesy forma informacja jest kontroler. To jest PHP, który faktycznie składającego wniosek do modelu. A następnie model daje Informacje w widoku co daje użytkownikowi, być może najlepiej uwidoczniono w następujący sposób. Więc jesteśmy. Oto nas po lewej stronie, a nasz model Zobacz Kontroler układ paradygmatu. Jak to działa? User-- us-- sprawia, że zapytanie do kontrolera. Poddajemy informacji na przykład poprzez postaci HTTP. Na tej podstawie sterownika zadaniem jest upewnić się, to, co użytkownik nie jest podana coś, co uszkodzenie modelu. I tak regulator będzie upewnić się, że wszystko jest OK. To będzie bardzo uważnie. Jeśli nie ma żadnych błędów, to będzie zatrzymać rzeczy tak więc użytkownik nie może dostać się do modelu. Ale zakładając, że wszystko jest OK, i to jest ważne pytanie, regulator kwerendy model-- będzie to z prośbą o dostarczenie informacji. Model ten zapewni, że Informacje na stronie, która jest widokiem, będzie to przekazuje go, że sposób, a następnie widok propaguje informacje wymagane od modelu. Tak więc, na przykład, jeśli mówimy o zalogowaniu do swojego profilu na Facebooku, na przykład. Widok będzie dane że wyszedł z modelu odnosi się do przyjaciół i nowości paszy lub takie rzeczy, prawda? Ale nie można zobaczyć kogoś innego. Byłbyś getting-- tak złożyć zapytanie, zalogować się do model-- pretekst mnie, to zalogować się na stronie. Zastosowania kontrolera dane logowania aby złożyć zamówienie do modelu, aby pamiętaj, że jesteś tym, kim mówisz, że jesteś. Jak modelki, OK, tak, jesteście, którzy mówicie, że są, więc pozwól mi dać swój kanał informacyjny. Dam ci surowych danych dla Twój kanał wiadomości do widoku, a następnie widok sprawia, że ładna, przetwarza je w sposób, że jesteśmy przyzwyczajeni, wyświetlając te informacje do użytkownika. Zwróć uwagę na połączenia, które jest nie istniejących na tym schemacie. Nie ma bezpośredniego połączenia między tobą i modelu. Zawsze jest to bufor sterownik po stronie wejściowej, i nie ma bufora zobaczyć na wyjściu. Może jesteś dobry osoby, a więc może ci nie zrobić żadnych szkód na modelu, ale być może nie jesteś. A może jest ktoś, kto złośliwy użytkownik, który będzie być może chcą zniszczyć bazę danych, może usunąć wszystko z bazy danych, który może być bardzo kosztowna. Oczywiście, jest-- danych o użytkownika tam wartość o dane użytkownika. I tak, jeśli nie umieścić ten bufor Obszar między użytkownikiem a database-- użytkownik i model-- rzeczy Nie może być tak dobrze będzie dla nas. I dlatego tak ważne jest, aby mają tego modelu, w którym Użytkownik może współdziałać z bazą pewna, ale muszą przejść przez nas aby to zrobić. I to jest w zasadzie pomysł z MVC. To trudny do realizacji bezpieczeństwo danych. To stara się chronić model z przypadkowo lub celowo szkodliwi użytkownicy. Więc co się dzieje, gdy zastosujemy ten paradygmat? Cóż, jesteśmy oddzielenie danych wymagane od naszej website-- model-- z logiki które realizuje nasza witryny functionality-- controller-- i od prostych estetyki i strony szablony, które zawierają nasze użytkownik experience-- widok. Co to znaczy? Cóż, oznacza to, że można zrobić Widoki widoczne dla użytkownika. Możesz ukryć model dala. I controllers-- użytkownika nie może bezpośrednio manipulować. Oni nie potrzebują dostępu do kodu PHP. Oni po prostu trzeba zobaczyć formularz gdzie można wpisać rzeczy w. Może więc forma jest widok, kontroler jest PHP, że forma składa do nich, regulator wykonuje zapytanie do modelu, model daje więcej informacji w innym widoku, że wyświetla informacje dla Ciebie. Twoje programy mogą uzyskać dostęp do wszystkie logiki biznesowej, ale użytkownicy nie mogą bezpośrednio dostęp do logiki biznesowej. I jeden w szczególności, być może, widoczne tego ilustracją jest kiedykolwiek otrzymał 403 Błąd Zakazane. Czy kiedykolwiek poszedł do sieci Strona i widziałem 403 Forbidden? To coś w rodzaju 404 Not Found. 403 Forbidden oznacza, że ​​próbował uzyskać dostęp strona, która nie ma dostępu do. Być może, że strona jest za pomocą separacji MVC aby ukryć swoją logikę biznesową, która musi występować w serwerze, w celu na stronę, aby działać, lecz nie żebyś się bezpośrednio do niego dostęp. Więc można uzyskać 403 błąd zabronione. I to nawet nie ma znaczenia jeśli byłeś zalogowany. Żaden użytkownik może dotknąć tego dot plik PHP. Mogą one jedynie dotykać to jedno, a to jedno- jeden że mogą touch-- może może oddziaływać z zablokowanym pliku bardziej pośrednio od użytkownika. Tak, czasami widzimy to uprawnienia Błąd ten 403 Forbidden. Jak możemy zmienić uprawnienia tak że rzeczy mogą lub nie mogą być postrzegane? Gdy zrobimy to zazwyczaj jest użycie Poleceń Linuksa o nazwie chmod-- C-H-mod. Aby to zrobić, format jest dość chmod upraszcza użytkowanie, uprawnienia, a co plik, który chcesz stosować tę zmianę. Więc może chcesz zobaczyć coś jak this-- chmod 600 helpers.php. A może chcesz zobaczyć this-- chmod plus x, który zawiera katalog. Czy to oznacza jednak? Tak, jest na dwa różne sposoby że uprawnienia są zwykle stosowane przy użyciu chmod. Pierwszy jest nazywany Metoda ósemkowy numery. Dotyczy to zazwyczaj uprawnienia trzy różne kategorie użytkowników w tym samym czasie. Więc chmod 711 plik, który umożliwi prawo do odczytu, zapisu i wykonywania plik, pozwoli wiele innych, szczególnie grupa a world-- tylko uruchomić plik. To, co przekłada się. Pierwszy numer jest jest to, co można zrobić, druga liczba jest co grupa może zrobić, a trzeci to, co świat może zrobić. Każdy, kto jest odwiedzenie Strona, która jest świat. Co to są te numery faktycznie przełoży się chociaż? Więc to w zasadzie tłumaczyć w ten sposób. Jeśli uprawnienie jest zero, nic nie może się zdarzyć. Jeśli jest to jeden, można wykonać polecenie file-- jeśli to zgody. Jeśli to dwa, można zapisać plik ale nie można zrobić nic innego. Jeśli to trzy, ty można pisać i wykonywać. I tak dalej, jak widać. Siedem oznacza, że ​​możesz zrobić wszystko. Więc dlaczego są one nazywane liczby ósemkowe? Cóż, jeśli myślisz o tym, tutaj jest jak sieci doskonałości i razy tak, i jeśli myślimy o nich jak czerwone i zielone pola, może to sprawia, że ​​trochę jaśniejsze. Ale jeśli myślimy o tych czerwonych pudełkach jako zera i zielonych pudełkach jak te, są to właściwie tylko zestawy liczb binarnych, prawda? 000 przekłada na dziesiętne 0; 001, dziesiętne 1; 010 dziesiętny 2, i tak dalej. I tak nazywamy te ósemkowy numery, ponieważ nie osiem różnych możliwości. Istnieje osiem różne cyfry, czy jesteśmy mówi o trzech bity information-- bit odczytu, zapisu nieco, a nieco wykonać. Więc teraz można mówić binarny, dziesiętny, szesnastkowy i ósemkowy. Więc wiesz, jak komunikować się z komputery w czterech różnych liczby systemy, więc to całkiem fajne. Tak więc, oprócz ósemkowej Program zgody, nie ma również uprawnienie symboliczne System, który jest nieco inny i zwykle jest używany najlepiej zastosować lub usunąć pozwolenie na całym pokładzie. Więc chmod a Plus X plik Dodajmy prawo wykonywanie wszystkich trzech kategorie users-- siebie, swoją grupę, a świat. To plusem jest dodanie części. Prawo do wykonania, to jest x. A fakt, że ma ona zastosowanie do wszystkich trzy grupy użytkowników będzie a. Więc this-- X-- oraz prawdopodobnie będzie być dokładnie taka sama jak chmod 711 złożyć, bo jeśli wrócić i spojrzeć na schemacie numerem ósemkowym jedynki i siódemki dają nam Prawo do wykonania pliku. Więc to jest chyba to samo. I można to wykorzystać instrukcja obsługi na to, co różne rzeczy w symboliczny struktura chmod-ing to. Zielone elementy tutaj będzie gdzie wszystkie zielonym kolorze przykładem Był to drugi temu. Niebieski będzie niebieski. Pomarańczowy będzie pomarańczowy. Więc co można zastosować Aplikacje Grupa, do innych, do użytkownika, lub wszystkich. Możesz dać je przeczytać, zapisu i wykonywania dostępu, i można dodać lub usunąć lub przypisać dokładnie zestaw uprawnień z wykorzystaniem tego modelu. W jaki sposób sprawdzić, co System dostępu do pliku jest? Zanim to zmienić, to chyba dobrze się naprawdę wiedzą jakie uprawnienia do pliku są. Jednym ze sposobów na to jest, aby uruchomić ls ale po prostu dostosować go trochę. Więc jeśli wpisz ls kreska l-- to jest małe l-- może Zobaczę coś takiego. To wygląda trochę tajemnicze, ale część, która naprawdę dba o jest rzeczy, po lewej stronie tam. To właściwie określa system dostępu do pliku. I można prawdopodobnie powiedzieć, bo to dostał R, W, a X, przeplatane. Te pierwsze three-- ignorując pierwszy na sekundę, co my zawrócić do. Ci, pierwsze trzy po first-- więc druga, trzecie i czwarte znaki tego łańcucha 10 znaków są uprawnienia, które masz. Więc najwyraźniej mogę przeczytać, zapisu i wykonywania PHP. Potrafię czytać, pisać i wykonanie PHP webdev, i mogę czytać i pisać test.php. Moja grupa może to zrobić. Więc najwyraźniej z PHP i katalogi PHP webdev, moja grupa może napisać do je, ale nic więcej. A świat nie może nic zrobić. Więc te pliki nie są publicznie dostępny i gdybym próbował dostęp do nich i nie byłem Apache, aby były dostępne, wtedy pojawia się błąd 403. To niepowodzenie. Próbowałem uzyskać dostęp do pliku, ale Nie masz uprawnień, aby to zrobić. A co to jest pierwszy znak? Cóż, prawdopodobnie można ekstrapolować tutaj, że d's odnoszą się do katalogów i kreska odnosi się do tak zwane "zwykłe pliki." A może i ty widziałeś tego, kiedy masz próbował usunąć plik za pomocą polecenia rm. Widzieliście tajemniczą wiadomość "usuń zwykły plik" - w tym przypadku, byłoby test.php. Zwykły plik jest po prostu coś, to nie jest katalogiem. Istnieje kilka innych tutaj, ale na ogół jesteś zobaczymy d's dla katalogów a nie w pierwszym elemencie. Ale to naprawdę wszystko było w porządku. Możesz sprawdzić plik uprawnienia za pomocą ls kreska l, można je zmienić za pomocą chmod. I, oczywiście, używać these-- zmiany uprawnień egzekwowanie tego MVC paradygmat do zabezpieczyć dane na swojej stronie i nie pozwalają użytkownikom aby uzyskać dostęp do wszystkiego, ale tylko rzeczy, które muszą aby uzyskać dostęp, tak dla Twojej strony działać tak, jak chcesz go do pracy. Jestem Doug Lloyd. To CS50.