[音樂播放] DAVID J.馬蘭:好吧。 這是CS50。 這是8週的開始。 你可能還記得,我們​​不放過 上次看一個新的語言 乾脆。 事實上,一個是相當 重量輕,它甚至不是 一種編程語言。 這是一種標記語言,它讓我們 實際上結構,使網頁。 而當你點別的 與this--結合 或者你會很快,如果 你還沒有。 我們將使用層疊 樣式表或CSS,這 是另一種類型的語言 用屬性和值 那將讓我們做 喜歡的東西改變顏色 並改變其位置 這些類型的調整的。 但今天起,我們開始 專注於更強大的語言, 實際的編程語言,如PHP。 所以,PHP已經有一段時間了。 正如你所看到的,它 設計的主要 早在實際 在web開發中使用 而實際產生的網頁。 那麼什麼樣的 特點做了語言 需要為了使捲筒紙 動態與它的網頁? 換句話說,如果你想生成 像Facebook的內容dynamically-- 新聞源,它不斷地變化,或 即彈出不時即時消息 以時間 - 像有什麼 功能按鍵件 需要在編程語言 它可以讓你動態 打印新的信息在屏幕上? 學生:代碼。 DAVID J.馬蘭:代碼。 行。 我們就買那種。 有一點更精確。 我的意思是,我們可以做 這與C,坦率地說。 這將是在頸部疼痛。 但是 - 是這一承諾? 學生:是啊。 變量,也許? DAVID J.馬蘭:變量。 OK,確保萬無一失。 變量肯定能幫助我們。 甚至更簡單的東西。 我們在使用它的第一個 第一天的節目 當我們真正說的“hello world”。 學生:打印。 DAVID J.馬蘭:打印,對不對? 打印,或printf中 C.因此,這段時間的世界裡, 我們已經在我們的 處置語言 - C, 在particular--甚至 從頭開始為此事了 可以生成文本的字符串。 好吧,如果HTML,正如我們上週所看到的,是 只是一大堆的文本字符串 儘管開放式支架和關閉 支架和某種韻 和原因,它的背後, 那麼我們可能真的 開始生成的網頁要么 手動鍵入出來gedit中 或在Microsoft Word中,為 matter--我們只需要一個文本編輯器。 或者,我們可以編寫代碼, 您的建議 早些時候,這將讓我們 動態生成HTML, 這就是我們要 開始用PHP做 並且最終即使有 語言JavaScript調用, 是用一種語言來生成另一個。 事實上,這就是Facebook的 和很多很多其他網站 做真正動態 顯示新的信息給你。 因此,讓我們開始this--一 神秘的看線,但一 這實際上是非常強大的。 到目前為止,我們一直在使用C, 這是編譯型語言。 而就在快recap--一個編譯 語言有什麼特點呢? 你顯然需要編譯 它,但到底是什麼意思呢? 是嗎? 學生:它需要 組裝成機器代碼。 DAVID J.馬蘭:OK。 它需要被組裝 成機器代碼。 所以,你把你的源代碼, 這是有點類似英語的。 你,轉換為 一些較低的水平, 這是所謂的最終 對象代碼 - 0和1的。 而正是這些0和1的 一個CPU,像那些由Intel生產, 真正理解。 現在,PHP和Python和Ruby和 JavaScript和其他的串 語言不編譯 語言,但解釋型語言, 這意味著你只需要輸入他們,然後 你不把它們變成0和1。 你不是只提供那麼作為 輸入到別人的節目, 所謂的翻譯。 而那人的 程序的設計 要了解每 在Python或PHP的每一個符號 或Ruby或任何數量的 其他語言的意思。 所以我們需要的是 這樣的事情。 所以,事實上,我要去 去到家電 在這裡,只需到任何 舊的窗口,而且我們 要繼續前進,並開放 一個名為,說,你好。 現在,以前,我可能有救 這即使是文件擴展名, 但我該怎麼辦 事情就更簡單了這裡。 我要繼續前進,開始 這個文件與此語法晦澀。 因此,“用戶,垃圾桶,ENV, 對於環境,PHP。“ 這是一個簡單的一行代碼是 要告訴我的操作系統, 去找你的地方 環境,不管它是什麼, 無論PHP is--的interpreter-- 並繼續使用該翻譯 解釋下面的代碼。 現在,這是怎麼樣的 PHP的一個醜陋的功能。 但是,在這種語言,任何 一次編寫PHP代碼, 你需要有這些醜陋的一 PHP標籤劃分的開始 你的代碼 - <?php的。 但低於在這裡,我現在可以做些什麼 很簡單,如printf你好逗號 世界反斜杠N分別閉合 引號,括號接近。 然後剛剛好 措施,我要去 繼續前進,接近 在這裡我的PHP標籤 讓一切看起來 漂亮精美印刷。 而當我點擊保存, gedit中實際上是足夠聰明 看那個第一行和 意識到,哦,你寫PHP代碼。 我的語法高亮 它與色 在這裡,使其立起 出多一點。 但現在我會去 到我的終端窗口。 我會縮小。 這項計劃被稱為“你好,” 所以我打算做點斜線你好, 但是權限被拒絕。 和bash。 實際上,我們聽說過 事情在幾個星期前 在Shellshock的範圍內, 其中的一個漏洞。 但是被拒絕的權限,我們已經看到了 之前,可能在不同的上下文。 有誰還記得如何 你可能會解決一些 其中,權限類似這樣的拒絕? 什麼是命令,至少? 學生:CHMOD。 DAVID J.馬蘭:是啊,CHMOD, 用於改變文件的模式。 你會得到更習慣 下週有一個後續問題 設置的。 但現在,我要改變 該模式不被讀取, 但讓​​所有人executeability 特權的能力 運行此文件。 我要去分配 即該文件打招呼。 如果我現在做點斜線打招呼進入, 看,其實,我的程序,你好世界。 和什麼樣的步驟做了我 顯然完全跳過? 編譯。 所以,我只是跑這個程序很簡單。 而事實證明,你可以做到這一點 很多語法類似於C 讓我走在今天的代碼, 我把我的虛擬主機目錄 在這裡,真正的原因 我們再回過頭來。 而且我要進入, 比方說,條件1。 你會看到這裡,第一, 最重要的是,一大堆的意見。 但其實這是 一個再創造的PHP 一個程序,我們在做一周 一個叫條件1.C 其中,目的在 這個方案的壽命 顯然是要問 為一個整數的用戶 然後做一些蓬鬆 分析它,從而 你說,如果是正面還是 負或等於零。 和我提起這事,只是因為, 除了也許一個小細節, 它是不可區分的,到目前為止,從C. 什麼是特色之一 在這裡,也許跳出 你作為一個有點不同? 也許兩件事。 是嗎? 學生:美元符號N + DAVID J.馬蘭:是啊。 因此,美元符號存在n。 而美元符號,如 我們會看到,會 是一個修復程序的開始 在PHP中的任何變量。 它在愛恨bad--好 它的排序明顯的是什麼 一個變量,壞的,因為它是 另一件事鍵入。 而且還有另外一個 事情我們還沒有完全 看到的那樣,至少由該拼寫。是嗎? 學生:Readline的。 DAVID J.馬蘭:Readline的。 readline的,我們並沒有看到,本身在 C,儘管存在著一些 類似的,但是我們使用的GetString, 這是它的對手。 所以,如果我進入這個 目錄中,這恰好是, 我會在我的虛擬主機了一下解釋 目錄和我的源目錄, 我繼續前進,做點斜線 條件 - whoops--點斜線 條件1,你會看到,同樣, 同樣issue--權限被拒絕。 因此,讓我放大和文件模式做一個加 X上的情況下,點斜線條件。 我想一個整數,請50。 我們可以發揮這 遊戲一整天。 它要表現得完全 因為它沒有在一個星期。 行,所以不是所有的不同,除了 沒有語法只是輕微的一點, 但在頂部,我又 有這種線, 讓我創造的東西, 貌似名為hello C程序, 所謂的條件1。 但它不是0和個位 我直接執行。 它不是運行此 翻譯的名字 剛好是相同的語言。 該計劃被稱為PHP,和我的代碼 下面一行被傳遞到它。 我們可以做的另一種相當簡單的 例如讓人聯想到的東西 我們在幾週前就已經。 再次,這是一種類型的 的任意代碼塊 這顯然是不 當你運行它呢? 這是什麼付印,大概是? 所以最初的16行,它的 要說X現在是2,可能是。 %d是一樣$我的printf的。 這樣的話它的魔方,點, 點,點,在第17行。 然後第18行出現 調用函數立方。 何為立方定義? 嗯,它看起來像在第25行, 所以這還不是全部不同。 我已經得到了上面的一些意見 它,但在大多數情況下, 這是一個相當簡單的 移植或轉換 從C程序的PHP版本。 但現在有幾個 差別也許應該跳出。 還有什麼是你如何不同 可以寫在C中同樣的程序? 學生:[聽不清]。 DAVID J.馬蘭:有 沒有原型往上頂。 所以PHP--坦率地說,一 很多現代languages​​--的 有很多更聰明,更樂於助人 比C編譯器中,你 可以把函數在這裡, 你可以把一個函數到這裡, 並解釋是怎麼回事 做你的閱讀青睞 它決定之前,整個文件 有些功能不存在。 這麼好看的改進年後。 但也有一些 有什麼不同或不存在這裡。 是嗎? 學生:[聽不清]。 DAVID J.馬蘭:我們不必 聲明的變量的類型, 所以我們會看到不久的 有不同類型的PHP, 但你並不需要指定它們, 這也是有好有壞。 並有一件事缺失。 學生:有沒有圖書館。 DAVID J.馬蘭:沒有圖書館。 好了,這很好。 我們得到了很多開箱即用。 所以實際上是多了很多 事情比我想像的不同。 怎麼樣在回來的方式? 那是什麼? 說一次? 學生:指針。 DAVID J.馬蘭:沒有指針。 行的,至少在這個示例中,沒有。 這是公平的。 因此,有沒有指針 在PHP中其實一般。 有一種叫做參考, 但我們不會花太多的時間在那裡。 還有呢? 學生:主要。 DAVID J.馬蘭:主。 因此,這是大問題 我在想的。 請注意,沒有主入口點。 您只需開始編寫代碼。 這實際上是 將是有利 當我們轉型 暫時以實際使用 此相同的語言,用於基於web的 編程,為此我們 不希望只有一個入口點。 我們可能希望有一堆 網址,一堆不同的文件 在用戶輸入所有服用 並產生輸出。 但這裡是非常令人沮喪 例如,我答應最後一次, 即此文件夾中 在這裡,拼寫錯誤。 所以在這個文件中的拼寫,這是我們 不會花太多時間,有 本質上是porting-- P-O-R-T。 它只是給出時候,說了一句話, 你從一種語言轉換 另一個通常手動。 這是PC的移植 從PSET 5版本拼寫的。 我基本上是試圖轉換 通過線就行密切,我可以。 所以,如果你喜歡這種東西, 它實際上是值得在某些時候 兩個邊向上拉他們 一邊,看看哪些是相同的 這有什麼不同。 但他們相當不錯的相似。 如果你還記得什麼 拼寫甚至長得很像, 即使你沒有 要改變這個文件, 這是很相似的 在結構上只有一對夫婦 變化在這裡和那裡。 所以,這只是說,這是很 簡單的轉換拼寫 從C到PHP。 但是,在字典中,有 一些更加引人注目。 讓我繼續前進,創造 我自己dictionary.php文件。 所以在這略有不同 我們稱之為.C它的.php來代替。 因為這是一個PHP文件,我 do--略有annoyingly--有 啟動與該文件 一個PHP標籤那樣。 而且我要繼續前進 並定義一些功能。 函數調用檢查,這是 要採取的一個字像以前一樣。 但這種說法的 將有一元錢 簽名因為我們再次使用PHP。 從另一個功能 dictionary.c是負載 並用了在字典中的名稱, 所以我會得到這個函數蓄勢待發。 另一位在dictionary.c是什麼? 大小的最好的人之一,在 至少,如果你周圍保留了一些變數。 這樣的尺寸只是要返回一個變量。 再有就是卸載。 所以,有這四個 在問題的功能設置5 你需要實現與 一些數據結構或結構。 所以,我承諾,在 PHP,我們可以聲明 哈希表,例如 這些更容易。 事實上,如果我想要一個哈希表, 我只是要去這樣的 還有就是我的哈希表。 這就是說明,令人沮喪, 我們在上次離開。 而你知道嗎,如果我想 對於大小可變的,好了, 這其中並非全部 從C不同, 但我要繼續前進,做到這一點。 並注意沒有數據類型。 我會回去以後和 其實在這裡補充一些意見。 但對於負載? 如果美元符號字典 是我的文件的名稱 實際上我想加載 也就是說這個表,現在, 其實我可以做的 事情很簡單。 埃德蒙頓,這是minorly annoying--在PHP中, 你必須指定內部 如果一個函數的你 要訪問一些全球 這被定義之外的變量。 但是,這並不特別 有趣的現在。 更有趣的是這對每個 構建我上次提到的。 而事實證明,PHP有一個功能 所謂的文件,其目的在生活中 是打開一個文件,並讀出在 它的所有行到一個數組 並把他們回。 這是說我可以做這樣的字典 現在有效的,當我打電話的文件, 這是要交給我回來 從文件中單詞的數組。 這不是所有的好。 它仍然將是一個行 的話,東西直線。 但是,我可以繼續循環 在每個這些詞使用 該語法,我們看到簡要最後一次。 你會看到它的更多 在即將到來的PSET。 但現在我有一個循環迭代 在字典中的每個單詞。 並在每個迭代中,記得我 調用當前單詞“字。” 和所有它要採取 把一個單詞到詞典 將是猜字“真”。 這是我的插入功能。 這是我的加載功能 我的字典。 現在,這是一個有點作弊,因為, 你知道嗎,有實際 反斜杠N為在單詞的結尾 我也許應該改掉, 但是這不是一個問題,因為PHP有 一個函數調用印章字面 關閉一個字符扒在最後。 所以,沒有任何問題。 我們已經先行一步,實際上 縮短的只是這個。 現在我應該跟踪 大小,讓我們至少要做到this-- 大小++。 因為之前,我可以做到這一點。 然後這很可能會 工作得很好,讓我們回到正確的。 完成的。 PSET 5。 [笑] DAVID J.馬蘭:OK。 我們要再做一次 與下一個PSET得。 那麼,關於大小? 那麼,這一次希望是關於 你所期望的最後一次, 但我必須這樣做 這個愚蠢的全球性的事情。 這只是從一個神器 該語言的設計。 但是,檢查是更有趣一點。 所以,如果我通過了以美元 第一次簽的話,我 要獲得 全球變量表。 現在如果我想 檢查一個詞是存在的, 我可以簡單地說,如果這是真的, 下面的設置在該表中, 然後繼續前進,返回 真實的;否則,返回false。 完成的。 PSET 5的另一半。 好吧,如此反复,我 而省幾個小錢。 憑心而論,我也許應該 花了幾秒鐘 在此實現。 我可能不應該嘲笑一切 小時就提上了PSET這麼多。 所以用strtolower是一個函數。 同樣的事情也存在主義 在C中,至少對於字符, 但PHP的得到整個字符串版本。 這是怎麼回事,迫使一切 為小寫,其中一些你 可能會做什麼規範化 你把你的字典。 現在你可以用C做了。 這有沒有關係PHP。 但是,任何時候你有 一個布爾條件, 喜歡的東西就行 10那裡,也就是只 將評估結果為true或 假的,如果您還有清晰 將返回true或false,我可以 只是真正使這個性感 而只是做這樣的事情。 因此,有我的檢查功能。 對了,如果布爾 返回一個真或假, 就讓我們回到它立竿見影。 而且還有一些其他的調整 我能在這裡和那裡。 Load--卸載,順便說一句,這樣做了。 無關那裡。 由於所有的存儲器中 PHP和許多其他語言 其實是你管理。 因此,而在C中,作為 你已經學會了痛苦, 任何你的malloc或釋放calloc或 realloc的,你必須釋放自己。 任何你的fopen,你要FCLOSE, 使資源得到最終釋放 而像Valgrind的工具不 注意,不要抱怨, 這是一件好事,在它們上面運行。 但可以肯定,必須有 有些趕,對不對? 否則,我們種浪費 一大堆星期。 所以有任何數量的原因 樣的,為什麼我們把這個軌跡, 但有一個折衷。 沒錯,這一直是主題。 那麼,什麼可能的權衡 在這裡運動,從C到PHP? 感覺就像是贏得所有迄今除 有點醜陋的這裡或那裡。 是啊。 那是什麼? 學生:[聽不清]內存。 DAVID J.馬蘭:速度。 行。 好吧,我的速度是相當快的。 對不對? 但程序的執行速度? 好了,所以這是一個公平的問題。 因此,它會發生,我提前 選曲無論我嘗試的解決方案,一個 我對大板 是一個嘗試的解決方案, 我有這個目錄在這裡。 所以,我在那一刻,我可以繼續前進, 在國王詹姆斯聖經運行此, 按Enter鍵。 這是正確的希望 執行結束時, 給我時間總 0.38秒的 1有些武斷例子。 如果我現在進入這個 第二個終端窗口 在這裡,我第一次打開gedit中,讓 我進入今天的代碼 - 這又 在該目錄下這裡 - 和 讓我繼續運行拼寫。 因此,只要是明確的, 這是PHP的版本。 我只是展示它的頂部位置。 所以,如果我做波浪CS50的拼寫 PSET 5文字,國王詹姆斯輸入。 它仍然比寫快 它在C,但總的時間 是,公告,0.93,而我 基於C語言的實現為0.38。 所以這是一個不平凡的區別。 而這僅僅是在一個文件中。 如果你要運行兩 項目與大板 並有一大堆的投入 經過測試,這肯定會增加。 如果我們有更大的數據集, 這也將增加了所有的多。 所以,是的,付出一些代價 速度的確是這樣的。 還有什麼? 是嗎? 學生:內存使用量。 DAVID J.馬蘭:內存使用量。 所以,我沒有給1秒 寫這篇文章時,PHP想到 版本到多少 內存我用。 我完全是推遲到PHP 自己和誰寫的程序。 而這可能是OK, 但如果我真的真的 關心擠壓盡可能多的性能 我的節目或我的網站 或者出什麼工具 我建立的,也許 PHP確實是不正確的語言。 而事實上,這是為什麼, 例如,很多網站servers-- 實際的程序 成為了網絡內容 - 是不是用PHP寫的 或Python或Ruby。 它們被寫入,像 現在你會做PSET 6, 在C中,這樣就可以擠 每一位的表現出來呢 而真正行使 在什麼樣的細粒度控制 怎麼回事下方 油煙機而不是僅僅把它 理所當然更高一些 級數據結構。 考慮一下,畢竟, 誰PHP實現 散列的概念 table--它實際上更多 妥善稱為關聯array-- 他或她有任何想法什麼樣的 輸入您將要 投入的結構? 所以,很顯然不是,對不對? 這是一個通用的工具 在工具箱的 提供給任何人誰想要 要使用它,所以它肯定 不能被最終優化 為正是你想要做什麼。 因此,貿易offs--開發時間可能 不同,性能可能會有所不同, 複雜性和內存使用情況可能會有所不同。 還等什麼,你會發現 越來越多的是,有 將不同 工具的交易。 而事實上一個超級多數 人們最後的項目在這個類中, 不管你信不信,C是不會 是正確的語言來使用。 而事實上,一個外賣的 最終為任何一類這樣的 是讓你思考, 好了,應該怎麼決絕 你要下架的時候 要解決一些問題。 而事實上,我們跨過這道坎 更因為我們看更多的語言 甚至超越今天。 因此,讓我們過渡到現在 也許是更熟悉的環境 使用像PHP語言。 這有點常見的使用 在命令行中,編寫腳本 像我一樣,但它的 多,更常見。 和它的目的是在使用 文件的形式,典型地結束 在.php--但是這 不是prerequisite-- 這本身生成的網頁內容。 因此,讓我繼續前進,打開幾 例子我提前做好準備。 而這些實際上是某種真實 在那一個的第一件事情故事 我辦完做過自己 CS50,也許,我想, CS51年前是我的 室友和我幫助 運行校內新生 體育節目,其中,在當時, 曾新生報名參加各種 通過填寫一張紙運動, 因為它被稱為,走 穿過院子到威格爾斯沃, 並放到一些 監考的大門下降。 然後,他或她會去通過 他們,然後手動實際上給我們發電子郵件 我們註冊了一些運動。 所以很明顯,一個機會 改進。 這些天來,你可能會轉向只 谷歌形式,但早在一天, 我們要真正達到for--這 甚至沒有那麼長的時間ago--到達 對於編程 語言,是不是PHP。 當時,它是 一些所謂的Perl, 這是自熄滅時尚的。 但這個想法是一樣的。 我本質上坐下來試試 端口進入的Perl版本的PHP, 但在完全免責,沒有給 任何認為美學只是還沒有。 因此,這裡是一個網頁。 這是一個文件。 如果我放大,其明顯 所謂froshim0.php 只是因為它是我們的第一次 例如,在這個系列。 並注意它有什麼出現 是一個非常醜陋的HTML表單, 但形式很有趣 因為它允許 我提供用戶輸入到瀏覽器。 現在,最後的時候,我們有一個形式, 誰沒有,我們提出我們的查詢參數, 因為它是所謂的隊列參數? 所以,谷歌,對嗎? 我們完全踢上的想法 幹什麼用該輸入什麼。 但今天,我們開始產生輸出。 而行為我要去看看 這裡最初是相當瑣碎。 大衛,我會檢查過性別 在這裡,馬修斯說,在這裡。 我不會隊長。 我要點擊註冊。 並注意URL有 改為註冊,0.php, 再有就是在這裡這個醜陋的文本。 我給不計較 這種格式。 但有趣的是,3 值顯然來傳遞。 這是PHP的排序 相當於printf-- 我們將看到它真正被稱為 在剛剛打印出bit-- 你傳遞給它的東西。 因此,這表明,這種形式 有至少三個字段,它 你看到我輸入他們進來。 一個是我的名字,一個是 性別,一個是宿舍。 和隊長甚至都沒有被發送到 服務器,因為我沒有檢查它。 因此,這顯然是說, 當你提交的東西在網絡上, 不僅做了URL有時 change--有時沒有。 事實上,文件名改變, 但究竟是從URL缺席 我們確實看到最後一次與谷歌。 是嗎? 學生:沒有查詢字符串 DAVID J.馬蘭:有沒有查詢字符串。 有沒有問號的東西。 有沒有問號Q 等於貓,因為我們做了最後一次。 而且也肯定沒有 問號名稱等於 大衛宿舍或等於馬修斯, 那麼,是所有的準備? 好了,讓我回去在這裡gedit中 並開闢了第一個這些文件 在我的虛擬主機,本地主機,公共 在此目錄中,進入froshim0。 所以,事實證明,幾乎 所有本頁面僅僅是HTML。 這可能是你不熟悉的, 但它很快會更因此與PSET 6 和PSET 7和PSET 8。 但是這僅僅是一個HTML頁面。 而有趣的東西 似乎是在這裡。 它的action屬性的表單標籤 有寄存器0的一個值。 這就是為什麼當我提交 此,它進入到該文件。 但方法不同today--職位。 因此,原來還有的至少 在網絡上使用兩種方法 發送信息 從瀏覽器到服務器。 獲取所說的URL。 發表在其他地方所說的那樣。 而什麼時候,為什麼你可能 其實想一個網站 使用後則改為 弄,只是憑直覺? 任何網站。 什麼樣的數據應該只是通過 由通過郵寄,現在的推斷,而不是 得到的,如果我們已經看到了 兩者區別在哪裡? 學生:[聽不清]保障。 DAVID J.馬蘭:如果你想 什麼是安全的。 所以,你可以鍵入密碼 到網站,信用卡 到網站會 這些種類的次優 如果瀏覽器把那 值的URL的內部。 為什麼呢? 你看它,它不 似乎是這樣的一個大問題, 但可能你很頻繁地走路 遠離電腦或使用電腦 實驗室等人 別人甚至是室友 可以很容易地行走,看看 私人信息。 當您發送一封電子郵件, 通過網絡,你可能 不希望出現這種結局的數據 在該URL為好。 所以有任何數目的原因 我們為什麼要放在這裡。 即使和photos--吧,我不是很 想像一下,你會如何利用圖形, 如JPEG,並把它變成一個URL。 你可以做到這一點。 還有它的編碼方式,但它的 只是不能直接這樣。 所以寄存器0實際上是 很給人留下深刻印象。 所有它說,從字面上是這樣。 它打印出的一些內幕 HTML標籤下面。 我有一個PHP標籤在這裡 嵌套的預標記的內部。 “預”的意思只是預格式化的文本, 單倍行距,就像一台打字機。 Printr是打印遞歸函數。 再有就是這個 這裡有趣的事情。 我們會回到這個 因為這裡的人, 但美元符號下劃線 交的似乎是 在PHP中的變量在任何 送你從瀏覽器到服務器 被存儲為您服務。 我們將看到如何得到的 不久該信息。 但首先,讓我們回去 一個稍微不同的實施例。 進入register--或 相反,froshims1.php, 這看起來有點不同。 我花了一點 努力與格式, 即使它仍然是相當難看。 但我要繼續前進 而輸入“萬人迷”了。 男性。 我們將檢查“隊長”這個時候。 我們會做馬修斯。 並註冊。 而這個時候它說,嗯,不是真的。 好吧,那麼什麼是寄存器1? 讓我進入開放註冊1還有 - HM。 好了,所以這是 有趣的,這 是一個敲門磚,現在走向 更有趣的節目。 請注意上面的這個文件有一個 PHP標籤以及一些意見。 而這些,就目前而言,分心 讓我們剛剛擺脫這些意見 就像他們在C和我要求 與此塊的代碼註釋 這個代碼 確認提交。 嗯,事實證明, 像美元符號變量 下劃線是後 所謂的超全局變量。 他們是這樣的 特殊的全局變量 這只是全現 可在程序中。 您可以使用方括號 索引到他們不要使用數字 像0,1,2,3,但實際的話。 所以,你能想到的美元符號 強調擔任排序哈希表 你可以通過一鍵進入,查找 單詞在中間的方括號中, 並且它會退給你 該用戶實際提供的值。 PHP有一個功能 所謂空,僅僅 說是或否,這 變量為空或不是。 我們有這些雙線, 這只是意味著,或者像C. 這樣在實際上,這4行僅 他說,如果用戶沒有給一個名字 或者沒有給出一個性別或沒 給一個宿舍,繼續和他重定向 或者通過該行這裡她。 所以這是一個有點神秘, 但是這只是字面上的意思 回到這個位置, 所以平底船用戶 回到無論他或她是從哪裡來的。 但它是一個有點不雅 在我硬編碼了。 但是,如果這種情況的話 不計算為真? 如果用戶沒有給我他 或她的名字和宿舍,性別? 如果條件不 要評估為true, 所以我不打第7行中退出。 所以會發生什麼? 這是什麼 有趣的關於PHP。 你可以將流入和流出 PHP模式,可以這麼說。 如果你想一些代碼來執行, 您可以打開和關閉PHP標籤 並把代碼中有像我在這裡所做的。 一旦你關閉 PHP的標籤,服務器 只是要吐 無論你放在那裡。 事實上,這是一部分 PHP的原創設計, 為更好地惡化,這是 代碼和標記攙和 語言。 我們將看到,這很 趕緊轉予成一團糟。 所以我們會做的更好比 這最終只是 注意難易程度,我 居然能夠執行一些邏輯。 但還是有點給人留下深刻印象。 讓我們打開了版本 2即時的新生,哪 顯然提交給register2.php。 因此,這個文件實際上會 看起來幾乎是一樣的。 我會去的新生即時消息2。 但是,在即時的新生2, 讓我們看看會發生什麼。 大衛,點擊單選按鈕, 這就是所謂的;馬修斯,沒有隊長。 註冊。 您已註冊。 並不是的。 哦,等一下,我們只是做 這個例子,不是嗎? 好吧,袖手旁觀。 我們會做三個。 顯然,一些是關於 發生與Gmail。 我們會到達那裡。 因此,即時的新生3看起來是這樣的。 沒有什麼不同。 但是當我做大衛,男,馬修斯和 註冊,這第三個也是最後版本 索賠,很簡單,你 註冊真的。 這就是那種無關緊要的。 但我要求這個 第三個也是最後版本 現在我已經重新正是我 室友和我建立了即時的新生 程序年前。 它很簡單。 沒有數據庫, 沒有Excel電子表格。 但更重要的是, 沒有更多的紙 因為我們這個項目做了 是真正的電子郵件監考官,誰 此前接受 這些東西通過表格。 顯然我們在編寫此 這樣一種方式,當某人寄存器, 約翰·哈佛的帳戶的電子郵件 在這種情況下proctor--還是他自己, 約翰Harvard--具有以下 text--“此人剛註冊的。” 名字是大衛,隊長是空白的; 性別,男;和宿舍,馬修斯。 到底發生了什麼呢? 好了,在這裡的問題文件 顯然register3.php。 如果我開這一點,你會看到 像這樣的代碼,兩者的力量 而且,坦率地說,不安全 像電子郵件系統。 我剛才有效地假裝 約翰·哈佛以下面的方式。 我開的PHP標籤往上頂,這 只是說這裡來了一些PHP代碼。 到這裡,原來有 在PHP庫。 你只是不需要 包含頭文件一樣多。 你得到更多的 廚房水槽,可以這麼說。 但是這一次在第4行,我做的 想所謂的特殊庫 PHP的郵件,這是你的東西 可以免費在許多系統上安裝。 到這裡,我驗證 在剛剛提交 通過檢查沒有用戶給 我的名字,性別,和宿舍。 如果是的話,請繼續 實例化一個郵件。 你可以把這個作為一個 線是剛剛分配的代碼。 這就像malloc的,但 這是一個有點性感 在你提到不只是 malloc和一些通用的編號。 你說給我其中的一個, 給我這一個新的。 如果您在已設定 Java或C ++或其他語言, 你可能已經看到了這一點。 但是它的短,如果 陌生,這條線 投入到美元符號的郵件 特殊的結構稱為 已內置對象 電子郵件功能。 而事實上,通知和類似的語法。 這不是一個指針,本身。 PHP只是使用相同的語法。 該行稱使用 SMTP--簡單郵件傳輸 協議,它僅僅是 協議,用於發送郵件。 這是指定用途 哈佛大學的SMTP服務器, 是在這裡的某處校園。 這是說什麼TCP 端口號,聊得來, 我只是想通了這一點通過 谷歌搜索或詢問服務台。 然後,因為哈佛的使用了一些 在郵件server--系統安全 至少要加密 你和它之間的流量, 雖然任何人都可以發送給它 - 我要打開TLS協議 為保持這種安全的。 但是,這是哪裡的東西 變得有點嚇人。 我可以隨意 說我jharvard, 而且我可以隨意 在這裡我發電子郵件。 然後,我可以指定一個 受這條線在這裡。 而這只是長相醜陋,但它的 只是一堆級聯。 原來,PHP有一個超好用的象徵, 像一些語言,點操作符, 這只是字面上符連接 字符串的字符串後的字符串後, 你不必對malloc或圖 出字符串的總長度。 你就去做。 事實上,因為我串聯 在所有這些事情與這些點, 這就是為什麼我的電子郵件 發送看了,因為它沒有。 然後最後在這裡,我要送的郵件。 因此,如果這是假的, 我只是會死, 這是一個函數,只是打印 到屏幕上的一些錯誤信息。 但是,實際上, 調用send功能。 否則,如果所有的失敗, 它重定向我回到這裡。 還有,為什麼我看到 我註冊的是嗎? 嗯,這事就在這裡。 所以我提出來的 有兩個原因。 一,這是究竟如何,如果你建 一些網站的最終項目 或用於現實世界中,這是 你如何發送電子郵件提醒 給你的客戶或你的用戶。 這是你如何發送密碼的提醒。 這是你如何發送人的郵件 他們有一個新的Facebook 消息尚未了結或類似的東西。 但它也說話 的事實,這可能 一直非常好,從 達文或其他任何人。 我說這樣的 面帶微笑,因為我 搞不清是怎麼回事,通過 幾個你的心在這一點上。 但是,這是其中的一個做的,因為我 說,還不如我做那種事情, 因為它是微不足道的 建立這樣的電子郵件。 但正如你可能已經看到 或閱讀深紅, 最近它也是相當 平凡的人 跟踪他們回到一些原點。 並問我一些時間,也許 在CS50的午餐,我第一次 相識非常密切 幾乎到了編輯委員會多年 以前,當我發現 互聯網如何工作。 因此,在任何case--略 之後,編輯終於上了。 所以,在任何情況下,存在一個 一大堆超級全局變量, 因為它們在這裡被稱為,其中一個 我們saw--美元符號下劃線後。 有一個名為get對應, 這是哪裡的東西從一個URL 結束了下去。 而且還有一大堆其他的, too--會話和服務器的cookie。 我們會回來 cookie的一些其它時間 但會是一種很酷的 因為右now--直到now-- 一切,我們已經與Web瀏覽器進行 是那種無狀態的,可以這麼說。 我可以按一下周圍,接入 在服務器上,文件的東西 發生在屏幕上,但 那麼連接關閉。 在Internet Explorer或 Firefox的圖標停止旋轉 你剛才看到了什麼 該網頁包含的內容。 因此,HTTP是無狀態的那 一旦建立連接, 得到了一些數據,僅此而已。 沒有更多的連接,不像Skype公司, 不同的Facetime,谷歌聊天軟件不同,它 保持恆定的 連接到服務器。 網頁是從根本上 斷開,雖然我們 不久怎麼看 我們可以模擬的東西 像Facebook聊天和谷歌聊天軟件, 它保持illusion-- 或實際上做維護 使用持續連接 更多的現代技術。 但是,如果我去,說,counter.php, 這是另一種簡單的例子, 正如我們所看到的,目前認為 我參觀了現場零時。 但如果我只是重新載入頁面, 它在某種程度上知道我在這裡之前。 如果我再次重裝,它 知道我在這裡之前。 一次又一次,再而三。 因此,有一些加plussing 怎麼回事,但通知 這個小東西不斷旋轉,使 簡要地往上頂,然後斷開連接, 所以它不是像我有一個恆定的 連接到我的設備。 好吧,如果我進入counter.php, 注意到它是多麼的簡單。 我第一次把這種特殊的 函數,我們很快就會 開始服用理所當然 所謂的會話開始。 啟動一個會話。 和會話今後就是 將是一個水桶,像一個購物 購物車中,你可以把值 和那種信任,作為一個程序員 他們打算到這裡來的時候 該用戶自帶back--第二 後來,一個小時後,甚至一年後, 只要他或她不明朗 他們的餅乾,因為我們最終會看到的。 現在我只是有 如果一個條件在這裡。 因此,如果下面的項, 所謂的專櫃,設置裡面 這個超級global--這個哈希 表,如果你will--所謂會話, 然後繼續前進,抓住 從session--思考價值 此作為購物 車 - 並將其存儲 在所謂的櫃檯臨時變量。 否則,如果該值是計數器 沒有設置所謂的購物車, 只需將它初始化為0。 最後,到這裡,去放回 放入購物車或會話 計數器1的值。 所以,事實證明,這 特種集裝箱這裡 - 這又是這些相關聯的一個 數組,數組,你可以索引 進言,而不是numbers-- 後仍存在用戶消失。 再次,我會回去的頁面了。 它是一分鐘左右。 但記得,我已經 來過19次。 這是我20日訪華。 所以這將是關鍵 實施該記住任何網站 你已經登錄,你把 您的購物車字面的東西 買,或者你有一些 消息數待定。 任何時候你想要 記住的信息, 我們會看到,PHP,像 其他幾種語言, 為我們提供了這種幻覺狀態 儘管,您將在PSET 6看, 當你正在做的HTTP請求 從客戶端到服務器,僅此而已。 一旦你回來了 對此,沒有什麼更多 默認情況下,來從服務器返回。 但是,我們將看到如何解決的。 現在好了,讓我們嘗試 打掃一下一點點​​。 我們已經看到了一些 不同的例子在那裡。 哦,順便說一句,對於 那些熟悉或不熟悉的, 的原因,該 即時的新生例如去 從尋找真 醜slightly--好, 還是ugly--小幅 不太難看,雖然仍然難看 因為如果我們看 在這裡的源代碼, 事實證明,我有這樣的 在該文件的頂部。 事實證明,自舉是其中之一 免費的圖書館那裡 存在不是編程語言 永遠,但對於CSS或JavaScript的 或HTML或者任何數量的語言。 而這些人這裡 - 本來就出來了 Twitter--的只是有 一大堆的風格。 這是一個巨大的文件 在這裡,有人寫道: 或某人的寫道,隨著時間的推移 指定顏色和格式 和諸如此類的東西,這樣我可以 那種借自己的語法 而不是要搞清楚 如何佈置自己的狀態。 這也被縮小的 使得計算機能夠 理解但不 不一定是人。 所以,這就是為什麼在 風格化有改變。 但是,讓我們現在做的更好 在設計方面, 因為如果我們停留下來 這條路太長, 我們的代碼的要 會導致混亂和混亂。 因此,讓我們專注於這些例子在這裡。 最後今天。 因此,這裡是一個超級簡單 對CS50的網站1.0版本。 它只有鏈接 講座和課程大綱, 和它的使用無序列表 tag--我們上一次使用的UL標記。 如果事實上,如果我 打開查看頁面源代碼, 你會看到,這是 真的,真的很簡單的HTML。 而事實上,儘管這是 引擎蓋下的一個PHP文件, 它仍然只是隨地吐痰 只出HTML現在。 所以,如果我點擊講座, 我們看到這樣的情況。 如果我點擊週 零,我們看到這一點。 如果我點擊 週三,我們看到這一點。 這顯然是PDF 從當天的幻燈片。 所有我做的是一個帶有鏈接 錨點標記這個網址在這裡。 所以,這只是說這是一個相當 簡單的版本CS50的網站。 讓我們來看看它是如何實現的。 如果我進入mvc0目錄, 我們會看到幾個文件。 一個是自述的,所以如果 一些這是太快了, 你可以閒逛 更悠閒以後。 並注意在這裡是一個index.php文件。 事實證明,如果 你自己,人, 沒有在指定的最後名稱 一個URL,通常是Web服務器 推斷一些默認名稱為您服務。 一個指數點事 一般是默認的。 所以這就是為什麼剛才 當我在這裡訪問此網址, 沒有文件名,沒有文件 延長,無期的URL。 它只是知道某種神奇 尋找index.php文件。 這只是一個約定。 可以被稱為什麼。 所以,如果我現在進入 index.php文件,你會看到 即,indeed--我們 擺脫的評論 因為這裡真的 沒有什麼有趣的它 - 這僅僅是硬編碼的HTML。 所以這是一致的, 不過,我的要求 你可以匯成HTML和PHP。 有沒有實際的 在這裡編程邏輯。 和其他文件相當 多一樣無趣。 這只是硬編碼一個星期 這裡每週一米,每週一W, 週一和週三。 然後如果我打開了零一周, 發現這幾乎是相同的。 那是怎樣的一個關鍵外賣的。 請注意,是多麼多餘,這是。 這些文件幾乎沒有改變,但我 拉著這些複製/粘貼的工作之一 在那裡我花了一file--推測 在本週zero--複製它 在每週一到來的時候, 並調整了幾個值。 我們也許應該能夠 做的比這更好的。 所以,讓我們恢復到MVC 並進入一個版本。 並請注意我有一個 幾個文件,原因是什麼 是共同所有這些文件只是一個 此刻ago--如果我回去版本0, 讓我們回到指數, 而剛剛postulate-- 一旦我擺脫comments--的 這是什麼頁面的一部分 大概是在每一個我的文件? 只需要調用它。 這行是重複的 可能在所有這些頁面? 是嗎? 學生:[聽不清]。 DAVID J.馬蘭:1〜9。 是的,絕對。 1到9,可能除了8 的變化,因為CS50一點點 成為講學或 零一周的東西。 但是,幾乎是相同的。 因此,所有這些東西僅僅是 種複製和粘貼。 還有一對夫婦 其他行,我能想到 那可能是相同的 在所有的文件。 學生:12和13。 DAVID J.馬蘭:是啊。 當然,12,13,14和可能, 只是因為有趣的東西 是發生在11行 和10,所以它似乎。 因此,讓我們來看看第1版, 它試圖改善這一點。 在這種MVC example-- 1版本中,我們將 解釋什麼是MVC方式的moment-- 如果我進入指數種,它 現在看起來有點混亂。 這不是那麼簡單之前。 但是,一旦你開始 仔細閱讀,這是 相當簡單的它在做什麼。 顯然,1號線和 8號線已經取代 大家只是identified--的東西 雖然剛剛好措施, 我只是在某些情況下離開的UL有 天沒有的事情列出來。 所以需要有點像英鎊 包括C.它複製並粘貼 內容有效 這裡到這個文件。 所以在header.php中,你 可以推斷,從它的名字, 將是該頁面的標題。 它種在這裡的孤兒。 它僅具有頂部,但 有下面沒有更多的內容。 如果我看一下頁腳同時, 這是另一個文件mentioned-- 這其中甚至不感興趣, 但同樣,這是常見的一切。 因此,這是頁腳。 這是首部。 這是這是文件 不斷變化的,所以為什麼不 試圖分解出的共性 在這裡這兩條線? 但是,我們可以清除此 一個遠一點。 我要繼續前進, 開了兩個版本的地方 我們會看到有 一個新的文件,helpers.php。 我們會看到,就是在某一時刻的內容。 讓我們去索引,為 入口點和以前一樣。 現在發現我需要 helpers.php,不是頁眉或頁腳。 但助手有點像 helpers.c和helpers.h從PSET 2 或PSET 3不久前,當你真正 沒有搜索並找到該PSET, 你把所有的代碼進行排序 和搜索在一個單獨的文件中。 這就是這裡發生了。 現在3號線看起來有點不同。 而這只是一條線。 為了使這更 清楚,我可能只是 確實這是風格上保持一致 與一切,我們已經做到了。 但是,這不是真的 改變的功能。 這只是一條線的實際代碼。 很顯然,有一個功能 地方叫做渲染頭, 這是哪裡的東西 變得相當強大。 請注意它的括號裡面 就是另一片語法? 它可能是一個有點難以啟齒,但 注意there's--我會放一些白 空間。 還有方括號。 和方括號中,我們看到了一點前 在關聯數組的情況下, 這是,再次,像散列表。 如果你覺得現在到C時, 為了參數成函數 必須始終是相同的。 你要記住什麼 訂購is-- X,Y,Z或Z,Y,x-- 你必須總是為他們提供 在同一順序或找一找 如果您忘記了。 但是,這似乎是一種聰明的辦法 路過的一個任意的鍵值 對由此標題名稱 在這種情況下的說法 和CS50是其值。 而事實上,我有 這些方括號 這裡的意思是,我可以 還傳遞東西 象是每週1或0或2或3。 因此,我們已經參數 以這樣的方式該功能 這可以利用多個輸入, 但現在它只是一個。 如果我現在進入helpers.php, 注意它在做什麼。 這是一點點 的新功能, 但現在只拿 信仰,這是 語法與您 定義在PHP中的函數。 你從字面上說的功能。 你沒有指定返回 型,這是一致的 與可變細節較早 在這裡你真的不強類型。 這只是規定 在默認情況下,此 接受聯合 數組作為參數。 你知道嗎? 如果用戶沒有通過1 中,假設一個默認值。 這是一個功能,C沒有 對我們來說,這是很好的,因為現在 數據,即使你 不給它任何東西, 將是一個 數組,但空單。 而作為旁白,提取物 只是做一些時髦 其中,它需要所有的鍵從該 關聯數組,所有的東西 你可以把方括號中, 並創建變量了出來 這樣我們就可以最終獲得 他們在footet.php和header.php文件。 這是一個有點抽象, 所以讓我指出這一點。 在index.php文件,請注意我 傳遞一個鍵值對稱號 與CS50的值。 如果我現在看helpers.php, 注意RenderHeader 被抽取了我傳遞的數據 中,然後,需要的header.php。 我所做的就是那種窮人的的 現在執行下面的。 如果我打開header.php文件, 注意,我不再難 編碼這個頭文件中的文字CS50。 我已經把這個無可否認的殘暴 命名功能,HTML特殊字符, 在那裡。 但是請注意,我做了什麼。 我有打開HTML。 然後我開的頭和公開賽冠軍。 然後裡面的標題的開放, 關閉標籤,我有一點PHP代碼。 這是一個很好的語法,但是, 這只是意味著贊同出來。 它的字面意思是this-- 呼應following-- 但這是性感寫。 呼應了標題 一個已經來傳遞。 但是,你有什麼感想HTML 特殊字符是怎麼一回事, 特別是如果你有 之前的一些HTML的經驗? 可能是什麼字 危險中要傳遞給頁 在那裡你動態地生成 網頁使用這樣的代碼? 讓我去這個文件,版本 2,看我能不能誘導這一點。 第二版是這樣的。 並注意一切 精美,做工精良。 但是,假如我去到index.php和 我指定我的網頁的標題 不CS50。 它是開放的支架腳本警報 你好世界,接近單引號, 右括號,分號, 開放式托架,斜線腳本。 腳本,如我們 最終看到的,是一個標籤 你可以用它來使用的另一種 編程語言叫做 JavaScript的Web頁面的內部。 現在這裡看到的邏輯。 這裡有一個名為標題的關鍵。 下面是它的瘋狂long值了。 但是,如果我去了助手頁面級 或者更確切地說,標題頁, 我調用這個函數 在該標題的第一。 所以,如果我現在刷新頁面,我 看到這,看起來可笑, 但它是安全的。 它只是看起來愚蠢。 但是,假設代替 我已經忘了這一點。 和記住我的話,一個非零數字 你會忘記這樣做 你會得到一些勤勞 學生或朋友來了 你在CS50公平或匿名 晚上閒逛在您的網站 而實際上注入的代碼 瞞著你進入你的網站 不知何故。 因為如果我只是吐 在這裡標題和標題 那裡 - 好吧,如果從字面上稱號 貌似這個和PHP 作為可吐的語言 從其他語言的文字, 這是從字面上去 來替換這個標籤, 當然,我把其他地方。 所以,如果我現在去這裡後重裝 撤銷這些安全機制, 現在我的hello world這裡。 現在還不是所有的大的 處理,但你可以做一些事情 多一點惡意 在這裡,像有 其他tags--,我們會看到,一旦我們度過 更多的時間在JavaScript--如位置 點HREF得到,報價,引文結束,HTTP business.com,但其相反的 從那天。 現在你可以誘導網絡 頁面居然馬上去 在這裡這個網頁。 而實際上,我不想 甚至去business.com 因為我不想 知道是什麼。 但是,這也將觸發代碼 被注入到當前頁。 因此,這是唯一地說,即使 我們要介紹一些超早 這些更複雜的結構中, 這一切都朝著確保的一端 你的代碼是不可利用。 所以,現在這裡的第三個版本。 它變得有點票友。 我真的不like-- 我的肛門側 漸漸的有點惱火 事實上,我已經叫功能 RenderHeader和RenderFooter 這幾乎是相同的。 於是我想到,為什麼不 我這些參數的函數 逼到一個叫打底, 有它需要第二個參數 象模板的名稱,最終 以render--要么頁眉或頁腳? 然後可選,如果我想 通過在一些鍵值對 像我這樣做,為的標題 頭但不是頁腳, 我能做到這一點。 所以現在如果我進入helpers.php, 這是一個稍微複雜一些。 我會揮動我的手在 細節,但它只是一個功能。 所以這是朝著更好的設計的一個步驟。 我們可以藉此一步。 如果我去了我的第四個 這個版本的,現在通知 我正在做的事情 更有種神秘。 我知道這是一個 大量吸收一次, 但我們只是種 清洗東西。 現在,我把我的助手 文件到一個文件夾,名為 includes--只是一個任意 名字在這裡我想提出的東西 我想包括 - 再 這剩下的是一樣的。 但是,如果我現在看gedit中, 我已經擺脫了通知 所有其他文件和我所 移動它們,例如,到此處。 然後在模板中, 我有這個在這裡了。 所以這是現在都朝著一個步驟 使用的一個更好的設計圖案。 我們非常迅速地 要搬走 從PHP的默認功能, 我們開始在這裡與, 在這裡你只匯成PHP, 和你的HTML和CSS的, 你剛才吐出來 你走你的路。 它不會是非常維護。 就像在C中,我們開始使用 多個文件和多種功能 和保理的事情說出來。 我們會在這裡做同樣的。 而事實上,在第五和最後 版本在這裡,我做了一件事。 您甚至可以使用點點,對此, 再次,就是父目錄。 為了更加安全意識, 因為如果我看聽 這裡的第五個,也是最後的版本,預告 我有一個目錄名為這裡 公眾,然後在 同一級別,可以這麼說, 我已經得到了包括和模板 然後將該文本文件的自述。 其原因我已經結構 它喜歡this--等眾多網絡 主機,特別是那些5元 那些一個月美元10個月的人, 如果你曾經有過的其中之一 services--是什麼讓很多人做 是他們只是希望你能轉儲所有 你的文件放到一個目錄中, 就像我們已經做了有 這第一個例子。 但只要你開始建造更多 只是存儲複雜場所 數據你關心和文件你 關心,其實組織的事情 正確和更安全 意識的頭腦可以 我們開始防守 對所有的朋友 你有兩種或 這個類以外的誰, 只要你開始做 在網絡上自己的節目, 要開始採摘 你和他們。 所以我們將看看 最終,在這個設計。 這僅僅是一個圖片 描繪如下。 我們打算把我們所有的 在一個或多個文件的編程邏輯, 我們要去剛剛開始 調用這些控制器。 它是其中的​​大腦 我們的網站竟然都是​​。 然後,我們要 有意見和看法 是簡單,只是單獨的 files--所謂的模板,通常。 他們只是有 我的網頁的美觀, 我想要的頁面看看 like--的顏色和佈局 的位置和 所有的變量。 然後更有趣 我們最終會到達 是模型,這將是剛 我們拍其他技術的話 我們領進 圖片,就像實際的數據庫, 所以,當你想 保存的信息, 你不只是發郵件 您的監考官或自己, 你居然把它存儲在數據庫中 使用稱為SQL另一種語言。 所以我們今天離開這裡 拿起這個星期三 並引入數據庫即可。 [音樂播放]