DOUG LLOYD: A volte quando stiamo programmando facciamo le cose così comunemente, così spesso, e così tante persone fare lo stesso idea-- o lo stesso cosa, che ha un nome. MVC è esattamente una cosa del genere. Si chiama un paradigma di programmazione. E 'come una sorta di best practice che sono stati distillati giù da persone che cercano di fare qualcosa. In questo caso, implementare un sistema di pagine che un utente interagisce con su un sito più complesso. Ed è fatto così comunemente che si consiglia come standard che altre persone potrebbe piacere a seguire, e c'è un insieme molto specifico di modi che si potrebbe seguire questo paradigma. Così, MVC è un paradigma, e la ragione usiamo è quello di astrarre i dettagli dall'utente. Alcune cose l'utente in realtà non hanno bisogno di vedere. Vogliono solo avere una buona esperienza utente, e non abbiamo bisogno di averli accedere ad ogni singolo file che esiste sul nostro web server, forse. Ci potrebbero essere alcuni file che sono solo utilizzato per sostenere l'esperienza dell'utente, e così possiamo astratto quelli via. Possiamo sorta di nasconderli così l'utente non può lavorare con loro, ma il nostro pages-- nostro pages-- sapere come trattare con loro e li chiamano, o forse richiedono, loro, o qualcosa del genere vuole. La motivazione primaria per MVC è la sicurezza dei dati, perché MVC viene di solito nella contesto di lavorare con i database. E in particolare si vuole impedire agli utenti dai database impatto direttamente. Abbiamo solo vogliamo farlo indirettamente, attraverso il nostro filtrazione. O fare in modo che tutto sia OK per noi facendo un po 'di controllo degli errori o prove di sicurezza prima di noi inviarlo al database, dove le cose potrebbero andare male, forse veramente sbagliato, se non stiamo attenti. Così MVC sta per Model View Controller. Che cosa ognuno di questi media? In sostanza, il modello è il database. E 'dove tutti i dati importanti per il tuo sito nomi utente lives--, login, password. Ed è possibile aggiornare, fare riferimento ad esso, praticamente tutto in quel modo. Faresti interrogare un database, devi chiedere informazioni dal database. Questo è il modello-- tutte le dati in cui vive il vostro sito. La vista è un po 'come l'esperienza dell'utente. Sono le pagine che vedono dopo essi hanno chiesto informazioni. Quindi forse della presentazione il loro accesso informazioni inclusi che farebbero in un controllore, che parleremo in un secondo. Hanno forse presentare le loro informazioni di accesso, e il database viene interrogato. Le informazioni vengono richieste e tirato dal database. E poi una volta che l'utente ha effettuato l'accesso in, che vedono la loro home page. Questo è un punto di vista, OK? E poi il controller è ciò che è chiamato la logica di business del sito. E la logica di business è uno di quei termini che è una sorta di ciac-washy-- piace, cosa logica di business significa? Fondamentalmente il vostro business logica è PHP. Il tuo utente non ha bisogno per vedere direttamente il vostro PHP, ma il tuo PHP è probabilmente quello che sta succedendo essere fare richieste al database. Così l'input dell'utente volontà informazioni in una vista, che integrerà un controller. Come, faranno digitare in una forma. Come che i processi di forma informazioni è il controller. Questo è il PHP che in realtà effettua la richiesta al modello. E poi il modello dà Informazioni alla vista, che dà all'utente, forse meglio visualizzata come segue. Ed eccoci qui. Qui ci sta a sinistra, e il nostro modello Disposizione paradigma View Controller. Come funziona? Il noi-- user-- fa un chiedere al controllore. Sottoponiamo informazioni ad esempio da un modulo HTTP. Sulla base di ciò, il controllore di compito è quello di assicurarsi che ciò che l'utente ha dato non è qualcosa che danneggerebbe il modello. E così il regolatore sta per fare in modo che tutto sia OK. Sta andando a guardare con molta attenzione. Se ci sono errori, si fermerà cose quindi l'utente non può arrivare al modello. Ma assumendo di tutto OK ed è una query valida, il controllore interroga il modello-- esso vi chiederà per fornire informazioni. Il modello che fornirà informazioni di una pagina che è un punto di vista, che sarà trasmetterla che modo, e poi la vista popoleranno le informazioni richiesto dal modello. Così, per esempio, se stiamo parlando sulla connessione tua pagina di Facebook, per esempio. La vista sarebbe i dati che è venuto fuori del modello che si riferisce ai tuoi amici e la notizia mangimi o cose del genere, giusto? Ma non si dovrebbe vedere qualcun altro. Saresti così getting-- si invia una query, si accede a la scusa modello-- me, il login alla pagina. Gli usi del controller le informazioni di accesso fare una richiesta per il modello di fare in modo che tu sia chi dici di essere. Come il modello, OK, sì, tu sei chi dici di essere, così mi permetta di darle tuo feed di notizie. Ti darò i dati grezzi per tuo feed di notizie per la vista, e poi la vista rende piuttosto, lo processa in modo che siamo abituati a, visualizzando che informazioni all'utente. Si noti la connessione che è non esistente su questo schema. Non ci sono collegamenti diretti tra voi e il modello. C'è sempre il buffer di il controllore sul lato di ingresso, e c'è un buffer del visualizzare sul lato di uscita. Forse sei un bravo persona, e così forse si non farebbe alcun danno al modello, ma forse non lo sei. O forse c'è qualcuno che sta un utente malintenzionato che avrebbe forse vuole danneggiare il database, forse eliminare tutto dal database, che potrebbe essere molto costoso. Ovviamente, avendo è-- dati utente c'è il valore di avere i dati degli utenti. E così, se non abbiamo messo questo buffer zona tra l'utente e il database-- l'utente e le cose modello-- potrebbe non andare così bene per noi. E così è importante avere questo paradigma dove l'utente può interagire con il database, certo, ma devono passare attraverso di noi per farlo. E questo è fondamentalmente l'idea con MVC. Sta cercando di implementare la sicurezza dei dati. Sta cercando di proteggere il modello inavvertitamente o intenzionalmente utenti malintenzionati. Che cosa succede quando applichiamo questo paradigma? Beh, stiamo separando i dati richiesto dal nostro website-- il modello-- dalla logica che implementa il nostro sito web functionality-- il controller-- e dai semplici estetica e pagina modelli che compongono la nostra utente experience-- la vista. Cosa significa questo? Beh, significa che si può fare viste visibili all'utente. È possibile nascondere il modello via. E controllers-- l'utente non può forse manipolare direttamente. Non hanno bisogno di accedere al tuo codice PHP. Hanno solo bisogno di vedere un modulo dove si possono digitare roba. Così forse la forma è una vista, il controllore è il PHP che la forma sottomette, il controllore fa una query al modello, il modello dà più informazioni per una visione diversa che visualizza le informazioni a voi. I vostri programmi possono accedere tutti la logica di business, ma gli utenti non possono direttamente accedere alla logica di business. E uno particolare, forse, illustrazione visibile di questa è che tu abbia mai ricevuto un errore 403 Forbidden. Vi siete mai andati a una web pagina e visto 403 Forbidden? E 'un po' come 404 Not Found. 403 Forbidden significa che si è tentato di accedere una pagina che non si ha accesso. Forse questo sito è usando la separazione MVC per nascondere la sua logica di business che deve esistere sul server, al fine per la pagina al lavoro, ma non desidera di accedere direttamente esso. Così si potrebbe ottenere un errore 403 Forbidden. E non sarebbe nemmeno importa se si fosse collegato. Nessun utente può toccare questo file PHP punto. Essi possono toccare solo questo, e questo tra-- quello che possono touch-- forse può interagire con il file bloccato verso il basso più indiretta rispetto all'utente. Così, a volte vediamo questa permessi Errore, questo 403 Forbidden. Come si fa a cambiare i permessi così che le cose possono o non possono essere visti? Quando facciamo questo genere è quello di utilizzare un Comando di Linux chiamato chmod-- C-H-mod. Per fare questo, il formato è piuttosto simple-- chmod, permessi, e qualunque file che si desidera di applicare tale modifica a. Così, forse vedreste qualcosa come questo-- chmod 600 helpers.php. O forse si vedrebbe questo-- chmod un plus x che comprende directory. Era significa però? Quindi, ci sono due modi diversi che le autorizzazioni sono in genere applicata con chmod. Il primo si chiama il Metodo numeri ottale. Ciò si applica di solito i permessi a tre categorie differenti di utenti contemporaneamente. Così chmod 711 lima permetterebbe il diritto di leggere, scrittura ed esecuzione il file, permetterebbe others-- specificamente il vostro gruppo e il world-- per eseguire solo il file. Questo è ciò che questo si traduce in. Il primo numero ci è quello che si può fare, il secondo numero è ciò che il vostro gruppo può fare, e il terzo è quello che il mondo può fare. Chiunque è in visita il tuo pagina, che è il mondo. Che cosa sono questi numeri in realtà si traducono in se? Quindi questi fondamentalmente traducono come questo. Se l'autorizzazione è pari a zero, nulla può accadere. Se si tratta di uno, è possibile eseguire il file-- se questo è il vostro permesso. Se si tratta di due, è possibile scrivere il file ma non si può fare altro. Se si tratta di tre, in grado di scrivere ed eseguire. E così via, come si può vedere. E sette significa che si può fare tutto. Allora, perché sono questi i numeri chiamati ottale? Beh, se ci pensate, qui è come NoE e yeses, e se pensiamo a loro come caselle rosse e verdi, forse che lo rende un po 'più chiaro. Ma se pensiamo a quelle scatole rosse come zeri e le scatole verdi come quelli, queste sono in realtà solo set di numeri binari, giusto? 000 si traduce in decimale 0; 001, decimale 1; 010 è decimale 2, e così via. E così noi chiamiamo questi ottale numeri, perché ci sono otto diverse possibilità. Vi sono otto diverse cifre se siamo parlando di tre frammenti di informazioni inclusi il bit di lettura, la scrittura bit e il bit di esecuzione. Così ora si può parlare binario, decimale, esadecimale e ottale. Così si sa come comunicare con i computer su quattro numero diverso sistemi, così che è piuttosto fresco. Così, oltre al ottale schema permesso, c'è anche il permesso simbolico schema, che è leggermente diverso e di solito è usato meglio per applicare o rimuovere l'autorizzazione su tutta la linea. Così chmod un file x più potrebbe aggiungere la giusta da eseguire per tutti e tre categorie di users-- voi stessi, il vostro gruppo, e il mondo. Che più è la parte aggiunta. Il diritto di eseguire, che è l'x. E il fatto che si applica a tutti tre gruppi di utenti sarebbe la a. Così questo-- un plus x-- probabilmente sta andando di essere esattamente come chmod 711 su file, perché se si va indietro e guardare il sistema di numero ottale, uno e sette di noi il danno diritto di eseguire un file. Quindi questo è probabilmente lo stesso. Ed è possibile utilizzare questo guida di riferimento per quello che le varie cose nella simbolico struttura chmod-ing sono. Le voci verdi qui sarebbe dove tutti l'esempio di colore verde era un secondo fa. L'azzurro sarebbe il blu. L'arancia sarebbe il colore arancione. Così è possibile applicare le cose al vostro gruppo, ad altri, per l'utente, o per tutti. Si può dare loro lettura, scrittura ed esecuzione accesso, ed è possibile aggiungere o rimuovere o assegnare esattamente un set di autorizzazioni utilizzando questo modello. Come facciamo controlliamo ciò che un schema di autorizzazione file è? Prima lo cambiamo, è probabilmente bene sapere realmente quali sono i permessi dei file sono. Un modo per farlo è quello di eseguire ls ma solo modificarlo un po '. Quindi, se digito ls dash l-- questo è un minuscolo l-- forse Ci vediamo qualcosa di simile. Sembra un po 'criptico, ma la parte che abbiamo davvero a cuore è la roba di sinistra laggiù. Che in realtà specifica un sistema di autorizzazione del file. E si può probabilmente dire perché è ottenuto r, w di e X di intervallati. Quelli prima sulle tre ruote ignorando la prima per un secondo, che ci raddoppiamo tornare. Quei primi tre dopo il first-- così il secondo, terzo, e quarto carattere di tale stringa di 10 caratteri sono le autorizzazioni che avete. Quindi, apparentemente Posso leggere, scrivere ed eseguire PHP. Riesco a leggere, scrivere e eseguire PHP WebDev, e posso leggere e scrivere test.php. Il mio gruppo può fare questo. Quindi, apparentemente con il PHP e le directory PHP Webdev, il mio gruppo può scrivere a loro, ma niente altro. E il mondo non può fare nulla. Quindi questi file non sono accessibile al pubblico e se ho cercato di accedervi e non ero in esecuzione di Apache per rendere accessibili, quindi vorrei ottenere un errore 403. E 'un fallimento. Ho cercato di accedere a un file, ma io non avere i permessi per farlo. E che cosa è che il primo carattere? Beh, si può probabilmente estrapolare qui che la d's riferiscono alle directory e il cruscotto si riferisce a cosiddetti "file regolari." E forse hai visto questo quando hai ha cercato di eliminare un file usando rm. Hai visto il messaggio criptico "rimuovere file regolare" - in questo caso, sarebbe test.php. File regolare è solo qualcosa che non è una directory. Ci sono un paio di altri qui, ma in generale si è andando a vedere d's per le directory e nulla per il primo elemento. Ma questo è davvero tutto c'è ad esso. È possibile controllare il file autorizzazioni utilizzando ls precipitare l, è possibile modificarle utilizzando chmod. E, ovviamente, utilizzare these-- modificare le autorizzazioni di far rispettare questo paradigma MVC per proteggere i dati sul tuo sito web e non permettere agli utenti per accedere a tutto, ma solo le cose di cui hanno bisogno per accedere in modo che la tua pagina a lavorare nel modo desiderato farlo funzionare. Sono Doug Lloyd. Questo è CS50.