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。