DOUG LLOYD：有時 當我們編程
我們做事如此普遍，所以 頻繁，所以很多人
照此idea--或相同 的事情，它有一個名字。
MVC是只有一個這樣的東西。
這就是所謂的一個編程範例。
這有點像一個最佳實踐 已蒸餾向下
人們試圖做一些事情。
在這種情況下，實現 的網頁的系統
該用戶與交互 在一個更複雜的網站。
而且它這樣做通常是 我們建議作為標準
其他人可能會喜歡跟隨， 並有一個非常具體的方法
一個可以遵循這種模式。
>> 所以，MVC是一個範例，並且其原因 我們用它抽象掉的細節
從用戶。
有些東西用戶 並不真正需要看到的。
他們只是想有 良好的用戶體驗，
我們並不需要讓他們 訪問每一個文件，該文件
存在我們的Web服務器上，也許吧。
可能有一些文件，這些文件只是 用來增強用戶體驗，
所以我們可以抽​​象那些離開。
排序我們可以隱藏他們， 用戶不能與他們合作，
但是我們pages--我們pages-- 知道如何對付他們
並呼籲他們或者需要， 希望他們，或者類似的東西。
>> 主要動機 對於MVC是數據安全性，
因為MVC通常出現在 使用數據庫的情況下。
特別是我們 要防止用戶
從直接影響的數據庫。
我們只希望間接地做到這一點， 通過我們的過濾。
或者，確保一切正常通過 我們做錯誤檢查的一點點
或之前安全打樣我們 它發送給數據庫，其中
事情會出錯，也許是 真的錯了，如果我們不小心。
>> 所以MVC表示模型視圖控制器。
什麼是所有這些意味著什麼？
基本上，模型是你的數據庫。
這其中所有的 為您的網站的重要數據
lives--用戶名，登錄密碼。
你可以更新它，提到它， 幾乎所有這樣的。
你會查詢數據庫，你問 從數據庫中的信息。
這是該型號 - 所有的 數據在您的網站的生活。
>> 該觀點是有點像 用戶體驗。
這之後，他們看到的頁面 他們所需的信息。
所以也許他們提交 他們登錄information--
他們會做一個控制器， 我們將在第二講。
他們也許遞交 登錄信息，
和數據庫查詢。
信息請求和 從數據庫中抽取。
然後，一旦用戶的登錄 在，他們看到自己的主頁。
這是一個觀點，好不好？
>> 然後，控制器是什麼 叫你的站點的業務邏輯。
而業務邏輯 這些術語的一個
是那種空洞無washy--喜歡， 是什麼商業邏輯是什麼意思？
基本上你的業務 邏輯是你的PHP。
您的用戶不需要 直接看到你的PHP，
但你的PHP大概是怎麼回事 到發出請求到數據庫。
>> 因此用戶輸入 在一個視圖的信息，
其中將集成控制器。
就像，他們會輸入到表格。
如何這種形式的進程 信息是控制器。
這就是PHP這實際上 發出請求到模型中。
然後將模型給出 信息到視圖，
這使得它給用戶， 也許是最好的顯示如下。
>> 因此，我們在這裡。
下面是我們的左邊，我們的模型 視圖控制器模式安排。
它是如何工作的？
>> 該user-- us--使 請求到控制器。
我們提交資料 如由HTTP形式。
在此基礎上，控制器的 工作就是要確保
什麼給用戶不是 的東西，會損害模型。
這樣一來，控制器會 確保一切正常。
這將非常仔細地看。
如果有任何錯誤，它會停止的事情 因此用戶無法進入該模型。
>> 不過，假設一切都 OK，這是一個有效的查詢，
控制器將查詢型號 - 它會要求它提供的信息。
該模型將提供 信息的頁面，這是一個觀點，
它會傳送它的 方式，然後在視圖
將填充信息 從模型請求。
>> 因此，舉例來說，如果我們談論 有關登錄到你的Facebook頁面，
為例子。
該視圖將數據 說出來的模型是
指的是你的朋友和新聞 飼料或類似的東西，對吧？
但是，你不會看到別人的。
>> 你會getting--所以 您提交的查詢，
您登錄到該型號 - 藉口 我，你登錄到該頁面。
控制器採用 您的登錄信息
提出請求的模型，使 確保你是你說你是誰。
該模型的想，好，是的， 你是你說你是誰，
所以讓我給你的新聞源。
我給你的原始數據 你的新聞源的觀點，
然後在視圖使它 漂亮，處理它的方式
我們已經習慣了，顯示 該信息提供給用戶。
>> 請注意，連接這 不存在這個圖上。
有沒有直接的關係 你和模型之間。
總是有這樣的緩衝 在輸入側的控制器，
並有的一個緩衝 查看輸出側。
>> 也許你是個好 的人，所以也許你
不會做的任何損害 模型，但也許你不是。
或者，也許有別人誰的 惡意用戶誰也說不定
想破壞你的數據庫，也許 從數據庫中刪除一切，
這可能是非常昂貴的。
很顯然，有用戶數據is-- 還有價值有用戶數據。
因此，如果我們沒有把這個緩衝區 在用戶和數據庫 - 之間區
在用戶和型號 - 事 可能不會很​​順利我們。
>> 所以重要的是要 有這種模式在哪裡
用戶可以與數據庫進行交互， 肯定的，但是他們必須要經過美國
要做到這一點。
而這基本上與MVC的想法。
它試圖實現數據的安全性。
它試圖保護模式 從無意或有意
惡意用戶。
>> 所以會發生什麼，當 我們應用這種模式？
好了，我們分離數據 從我們的website--要求
從邏輯的型號 - 實現我們網站的
functionality--的controller--和 從單純的美學和頁面
構成模板我們 用戶experience--視圖。
這是什麼意思？
嗯，這意味著你可以 到用戶觀看可見。
您可以隱藏模型了。
而controllers--用戶 不能或許直接操作。
他們並不需要訪問你的PHP代碼。
他們只需要看到的一種形式 在那裡他們可以在輸入的東西。
所以，也許形式 的圖，該控制器
是的形式提交到PHP中， 控制器使得一個查詢模式，
該模型提供了更多的信息， 到不同的觀點，
為您顯示的信息。
>> 你的程序可以訪問 所有的業務邏輯，
但你的用戶不能直接 訪問你的業務邏輯。
和一個特別，或許， 這明顯說明
是你曾經收到 一個403 Forbidden錯誤。
你有沒有去到Web 頁面，看到403禁止？
這有點像404找不到。
>> 403禁止意味著你試圖訪問 一個頁面，你就不能訪問。
也許這個站點 使用MVC分離
遁形其業務邏輯 需要存在於服務器上，以便
為頁面的工作，但不 希望你能直接訪問它。
所以，你可能會得到一個403 Forbidden錯誤。
>> 它甚至不會無所謂 如果你登錄。
任何用戶都無法觸及這個點PHP文件。
他們只能碰 這一次，這埃德蒙頓
一個他們可以touch--或許 可與鎖定的文件交互
更間接地比用戶。
>> 所以，我們有時會看到這個權限 錯誤，這403禁止。
我們怎麼改變權限，因此 這東西可以或不可以看到？
當我們這樣做通常是使用一個 Linux命令稱為chmod-- C-H-MOD。
>> 要做到這一點，該格式是相當 simple--文件模式，權限，
和任何你想要的文件 以應用更改。
所以，也許你會看到什麼 像this--搭配chmod 600 helpers.php。
或者，也許你會看到this-- CHMOD 加X中包括目錄。
當時這是否意味著有關係嗎？
因此，有兩種不同的方式 該權限通常是
應用使用chmod。
第一個被稱為 八進制數的方法。
這通常適用權限 以三種不同的類別
的用戶在同一時間。
所以CHMOD 711文件將允許你 正確的讀，寫和執行
您的文件，將使 others--專
您的組和天下 - 僅執行該文件。
這就是這樣的語句。
第一個數字有 是你可以做什麼，
第二個數字是 你的組可以做，
第三個是這個世界能做到。
如果誰的訪問您的 頁面，這就是世界。
>> 這些是什麼號碼 實際上轉化為有關係嗎？
因此，這些基本上翻譯是這樣的。
如果權限 零，什麼都可能發生。
如果它是一個，你可以執行 file--如果這是你的許可。
如果是二，你可以寫文件 但你不能做任何事情。
如果是三，你 可以寫和執行。
等等，你可以看到。
七意味著你可以做任何事情。
>> 那麼，為什麼這些所謂的八進制數？
好吧，如果你想想看， 這裡就像不一yeses，
如果我們想想他們 紅與綠盒，
也許這使得它一點點清晰。
但是，如果我們考慮一下那些紅色方框 作為零和綠框為的，
這些實際上只是套 二進制數的，對不對？
000轉換為十進制0; 001， 小數1; 010是十進制2，依此類推。
因此，我們稱這些八進制 數字，因為有
八種不同的可能性。
有八個 不同的，如果我們的數字
談約三 information--的位
讀位，寫入 位和執行位。
所以，現在你可以講二進制， 十進制，十六進制和八進制。
所以，你知道如何與溝通 在四個不同的數量的計算機
系統，所以這是很酷。
>> 所以，除了八進制 許可計劃，有
也象徵權限 方案中，這是稍微不同
通常用於最好的應用或 除去全線的權限。
因此，文件模式加X文件裡 可能會添加合適的
執行所有三個 users--類別
你自己，你的團隊，和世界。
那加是增加的部分。
執行權，這是在x。
而事實上，它適用於所有 三組用戶將是一個。
>> 所以this--加x--很可能會 是完全一樣的搭配chmod 711
文件，因為如果你回去 看八進制數計劃，
那些亂七八糟給我們 權利要執行的文件。
因此，這很可能是相同的。
>> 你可以使用這個 參考指南是什麼
在不同的東西 象徵性的文件模式-ING結構。
綠色的項目在這裡會 在所有的綠色的例子
一秒鐘前了。
藍色將是藍色的。
橙色將是橙色。
所以，你可以的東西應用到您的 基，對他人，對用戶來說，
還是給大家。
你可以給他們讀， 寫和執行權限，
您可以添加或刪除 或分配完全是一個集
採用這種模式的權限。
>> 我們如何檢查什麼 文件權限方案是？
在我們改變它，它的 可能是很好的真正了解
什麼是文件權限。
要做到這一點的方法之一是運行ls 只是調整它一點點。
所以，如果我輸入ls衝L-- 這是一個小寫的L--也許
我會看到這樣的事情。
它看起來有點神秘，但 我們真正關心的部分
在左邊那邊的東西。
這實際上指定 文件權限方案。
你可能會說，因為它是 得到的r，W的，而x的穿插。
>> 這些第一three-- 忽略第一個
一秒鐘，這 我們將雙回。
那些前三後 所述first--所以第二，
第三和第四字符 該10個字符的字符串的
是你擁有的權限。
因此很明顯，我可以讀， 寫和執行PHP。
我可以讀，寫和 執行PHP Webdev的，
我可以讀取和寫入test.php的。
>> 我的小組可以做到這一點。
因此，顯然與PHP 和PHP Webdev的目錄，
我的團隊可以寫 他們，但沒有別的。
而世界也無能為力。
因此，這些文件是不 公開訪問
如果我試著 訪問他們，我不是
運行Apache，使他們可以訪問， 然後，我會得到一個403錯誤。
這是一個失敗。
我試圖訪問一個文件，但我 無權這樣做。
什麼是第一個字符？
那麼，你或許可以推斷 這裡說的D的參考目錄
而儀表板指 所謂的“常規文件。”
也許你當你已經看到了這個 試圖刪除使用RM文件。
你見過的神秘郵件 “刪除普通文件” - 在這種情況下，
這將會是test.php的。
常規文件只是一些 這不是一個目錄。
有一對夫婦他人 在這裡，但通常你
去看看德公司的目錄 並沒有為第一要素。
但是，這真的一切就是這麼簡單。
你可以查看文件 使用LS幾許升的權限，
你可以使用chmod更改。
當然，使用these-- 更改權限
執行本MVC範例 保護數據在您的網站
並不允許用戶 訪問一切，
但只有東西，他們需要 為了訪問您的網頁
工作，你希望它的工作方式。
>> 我是道格·勞埃德。
這是CS50。