DOUG LLOYD:所以在我們的 視頻PHP語法, 我們談了很多關於如何PHP 可以在命令行中使用 運行的方式程序 我們非常熟悉的C. 但正如我也提到 在該視頻,PHP 最初開發 實現網絡編程,網站。 所以,在這個視頻我們 要談談我們如何 在Web開發環境中使用PHP。 我們知道,已經從 我們的視頻在HTML, 該網站建 出了一套HTML標籤的 即語義定義 網頁的結構。 但網站是 建有純HTML 從一個非常痛苦, 非常嚴重的限制。 並說明此限制, 讓我們來考慮下。 所以現在我想建立一個網頁 即,每當用戶訪問它, 它給了我目前的 時間在馬薩諸塞州劍橋市, 顯示它的最新分鐘。 如果我現在做這一權利, 我可能會說這樣的事情。 當前時間Cambridge--所以我有 HTML標籤,頭標籤,標題標籤, 身體tags--當前 時間在劍橋為14:08, 打印出軍用時間。 如果它現在14:09,14:09,會發生什麼? 好了,到目前為止,使用HTML,我有 去中和它更改為14:09。 再一分鐘後, 我必須再次進行更改。 再一分鐘後, 我必須再次進行更改。 正如你可以想像,這是 可能是最糟糕的工作不斷。 你是站長的網頁, 每一分鐘,一天24小時, 您需要通過更新當前時間 手動打開為time.html和改變 代碼只是片段說的 當前時間以小時和分鐘。 這可能不是一個非常 很好地利用我們的資源, 人類和計算。 網站都是HTML 是完全靜態的。 您可以更新的唯一途徑 內容,正如我們所看到的, 是手動打開這些源 文件,編輯它們,並保存它們。 然後當用戶 刷新頁面, 或訪問該頁面的第一 一次,他們將獲得的最新內容。 但僅僅因為我們已經 手動編輯它。 如果我們開始把一些PHP在那裡, 我們的代碼可以得到很多更靈活。 我們可以有辦法為我們的網頁 是動態的,或更新自己, 而不需要我們可憐 網站管理員在前面的例子 要手動更新的東西。 他們可以自動地做到這一點。 我們沒有介入。 我們可以睡個安穩覺。 這可能是一件好事,如果 你做了很多的網絡編程。 因此,在CS50 IDE中,我們運行 Web服務器Apache的叫。 這是一個很常用的, 開源Web服務器系統。 該系統具有 能力來解釋 PHP,這將是非常有用的話 你想要做的任何PHP編程。 而在CS50 IDE,我們有一個命令 使這個很容易做到, apache50啟動。 然後那條斜線 路徑,以斜線,斜線 目錄,這只是一個非常普通的方法 說明你在這裡指定的內容 是一個路徑到特定 目錄你 想是根 現場,或根頁, 或文件夾從您的Web服務器 將開始檢查文件和服務 他們去誰要求他們的客戶。 因此,讓我們突然過來CS50 IDE,只是為了 告訴你,真快,是如何工作的。 所以,在這裡CS50 IDE,我在一個 目錄下名為週零點九。 我有two--我有 執行一個ls命令只 上面告訴你,我有 在這裡兩個目錄,PHP, 這是我用在組文件中的 在PHP語法的視頻,然後PHP的網站, 這是一組文件,我 想在這個視頻中使用。 我想先 一個Web服務器實例 與PHP的Web文件夾中的內容 因為文件被端上來。 所以,我該怎麼辦? 我要去型apache50空間 開始,PHP空間,破折號網絡。 這就是目錄的路徑 從那裡我目前。 然後,我敲回車。 它會做一個 東西一點在這裡。 然後它會說, Apache的成功啟動。 您的網站現在可以at--和 再有就是網址的網站。 所以,我該怎麼辦? 我要快速複製這一點。 而我要去開up--和 我會縮小一點點這裡 - 我要去開拓 一個新的選項卡瀏覽器。 而我要訪問該網址。 我要敲回車。 這將加載。 我會再次縮小。 而且我們可以在這裡看到的是 我的PHP網頁目錄的內容。 所以,現在基本上是從發生 在這裡,CS50的IDE我的實例 在這些文件中提供長達 任何人誰要求他們。 而過的課程 這段視頻中,我們將整理的 看看這些一堆 在上下文中不同的文件。 要測試你的Apache 服務器工作正常, 其通常會 是這種情況在CS50 IDE中, 但如果你這樣做更普遍, 你開始建立自己的網站 服務器,有一個真正的 不同凡響的模擬, “世界你好”,也就是通常 用於PHP的Web開發。 這是有一個文件 由眼前這個代碼 - 中 PHP的分隔符設置PHP的信息, 括號,分號之間。 這基本上是一個特殊的 PHP函數,告訴你 什麼版本的PHP您正在運行。 因此,在CS50的IDE,我有 可用的文件只是 給大家展示一下這會是什麼樣子。 所以,我看我的索引 從我的PHP實例。 我的Apache實例運行 PHP的網站的內容。 我有一個文件,這裡叫做info.php的。 我要點擊它,縮小。 這是你將成為怎樣 看看,漂亮多了。 這只是告訴我, 我的Apache服務器的工作。 這是,很顯然,在 版本的PHP我參加競選。 這是我模擬的“hello world”。 所以我知道事情是可操作的。 因此,我們好去。 我們可以從這裡出發。 因此,讓我們重溫那 時間例子我們 談到與我們可憐的站長 誰曾不斷更新頁面。 這可能是怎樣的修復 我想實現的東西 使網站管理員沒 必須不斷更新的時間。 它會只是有點 自動發生。 下下來,HTML,它的 非常相似,但有一個例外。 但在這裡我有一些PHP在頂部。 我有,顯然,稱這 功能date_default_timezone_set。 我們不談論所有 在CS50這些功能, 因為PHP有可能 數以萬計。 這可能是一個比特的 誇張,但它可能不是。 它有大量的內置函數。 所以這是一個功能明顯 設置我的時區為美國/東部, 這是我的時區 目前在製作這部影片。 然後,我打電話到 函數調用,日期。 而且,很明顯,我存儲的 HIS一種叫,時間。 所以,這是怎麼回事嗎? 好了,基本上什麼 發生的事情是,我在打電話 一些服務器,是要 告訴我現在是什麼時候了。 而我將其轉換為一種格式 時,分,秒。 其原因是大寫的H是這樣的 是要給我24小時時間,而不是12 小時的時間,這將是小寫小時。 而我只是存儲的 在一個名為變量,時間。 使PHP的第二行 那裡,調用的功能, 迄今為止,在剛開 一些字符串,這是 要給我的日期,和 時間,和一堆其他信息。 還有第一個參數,即HIS, 只是提取重要組成部分 我關心在這個例子中, 這是小時,分鐘和秒。 所以這是所有這回事。 所以,我存儲在一個變量$時間。 再往下的 最底層那裡,我 有簡寫 打印出當前時間。 所以我只是要打印 出當前時間是什麼。 因此,讓我們來看看這 CS50 IDE,看看我們現在怎麼是 保存該站長了很多麻煩。 好了,所以我在這裡再次 回到根目錄 我的Apache實例。 我這裡有一個名為time.php。 我只是要點擊的。 我會向上滾動,因為 我們在很遠放大。 目前的時間是14點20分34秒。 所以,我做的時間, 分鐘和秒。 我可以刷新 頁面,並獲得新的時間。 --41。 我要去刷新頁面 並獲得新的時間,44,46,47。 所以,我顯然不是 改變任何事情我自己。 我在這裡刷新頁面。 所以,我不能回到那裡編輯它。 我向你保證,我不 有什麼同黨 誰正在編輯的文件 以我的名義就在身邊。 我只是使用PHP函數, 時間,生成的時間,我 自動。 所以,即使我睡著了, 和我的Web服務器正在運行, 誰訪問該網頁仍然是用戶 要得到完全相同的當前時間。 所以,這是相當不錯的。 我做了我的網站更具活力 有沒有太多的PHP代碼。 這只是兩行代碼,然後 print語句的一點點。 而且我已經有一個 更加動態的網站 比第一個例子中我們看到了 在視頻的開頭。 因此,從PHP語法視頻回顧 該PHP解釋器運行時 我們的程序,它會忽略一切 這不是PHP的分隔符內, 吐了出來。 在該示例中,東西什麼 它被吐出了HTML。 這意味著我可以現在 點綴HTML和PHP在一起。 由於翻譯只會 忽略HTML和字面上把它輸出。 這是很好的,對不對? 因為據推測, 在一天結束時, 我想我的網站 的HTML構成。 使得任何web瀏覽器可以解釋 它,或理解頁面上的HTML 並使它的東西,我們 實際上可以理解為人類。 而我只能用PHP 我的網站的部分 在需要活力,需要我 有東西不斷更新。 所述靜態信息 可以保持不變。 好了,這很好。 但是,為什麼要這樣做呢? 為什麼我會混合使用HTML和PHP? 我可以只打印出所有的 HTML,使用PHP打印功能。 我為什麼不這樣做呢? 想想看一秒鐘。 為什麼,當我可以只打印out--我 可能有PHP的線條,只是說, 打印HTML標記,打印頭。 我為什麼不這樣做呢? 為什麼我混合PHP和HTML嗎? 好吧,如果你認為 它一秒鐘。 PHP的解釋有 來解釋它認為。 所以,這將有 要執行的代碼行。 打印出的HTML。 打印出開放的頭標記。 打印出開放的標題標籤。 這將有 執行和解釋 該方式的每一步。 為什麼不只是讓 解釋只是掩飾 事情不明白 並自動做到這一點? 這將節省我很多時間 混合我的HTML和我的PHP在一起。 所以這就是為什麼我們不這樣做 只需打開PHP定界符 然後只需打印出整個 我們網頁的內容,一個巨大的PHP 調用的功能,打印,然後 關閉PHP的分隔符,我們就大功告成了。 所以這就是為什麼我們將它們混合在一起。 到目前為止,我們還沒有看到太多的 從一般的PHP語法的差異。 它是非常簡單的。 我們已經看到了 問號,平等的。 我們看到了一些新的函數調用, 但沒有什麼花哨的事情。 我們也許做的事情 一個小票友。 如果我們想傳遞的信息 不同的PHP文件之間, 所以,也許用戶可以 提交信息給我。 然後我可以做一些事情 它另一頁上。 因此,PHP有支持 所謂超級全球 變量,這聽起來相當真棒。 他們真的只是 巨大的關聯數組 能夠幫助實現這個 路過的功能 PHP文件之間的信息 在我們現有的Web服務器上。 其中的第一個超級 全局變量被稱為$ _GET。 而且它可能是 最簡單的理​​解。 與$ _GET,會發生什麼? 好了,基本上,用戶 要輸入額外的信息 在我們的URL的結尾。 而無論他們輸入,假設 它的格式以特定的方式 稱為查詢串,這僅僅是 一組鍵值對分離 由&符號。 這些鍵值對會 存儲在$ _GET關聯數組。 而從我們的視頻 PHP語法,我們知道 如何一起工作 關聯數組了。 因此,這裡是一個例子 一些PHP,在那裡也許我 提取所有鍵值對 URL中提供的用戶。 所以,我有我打開PHP的分隔符。 我有一個foreach循環。 我對面的超級迭代 全球陣列稱為$ _GET。 而且我希望能夠參考 兩者的鍵和值。 而我只是將它們打印 出,每一個上明顯 在這裡它自己的段落標記。 我打印了一些HTML 和內插的值 的鍵和值到了語句。 因此,讓我們來看看如何 實際上在我們的IDE工作。 也許這將幫助 說明一點點 什麼GET實際上在做什麼。 所以,我回到我的Web根目錄。 我會放大一 點點向您展示 我有一個稱為文件,get1.php。 因此,讓我們點擊get1.php。 而且我沒有看到任何內容。 這是奇怪的,對不對? 嗯,不是真的實際。 因為我沒有提供 任何在URL中。 我要去get1.php,但我 沒有提供任何鍵值對 作為我的查詢字符串的一部分。 因此,讓我們添加一個查詢字符串 看看這個文件可以做到。 首先查詢字符串您 只需鍵入問號。 那麼也許我會說的名字=道格 - 年= 2015年。 然後,我會按Enter鍵。 現在可以看到發生了什麼。 我仍然在get1.php。 但現在我已經提供 鍵值對,我 打印出來的自己 paragraph--名稱,Doug--年,2015年。 這也正是代碼,我們只是 剛才看到的幻燈片。 如果我想也許再添 鍵值對,與類= CS50。 現在我有另一個關鍵價值 該集團的印刷出對 當我再次重溫URL。 現在,也許這不是 格式化的非常好。 所以,我有另一個版本get.php的。 這是get2.php。 在此差 一個是我的CSS文件, 它格式化東西 多一點很好地適合我。 這也許不是最 美麗的CSS的世界。 但它這樣做的另一種方式。 所以,我仍然可以訪問 使用$ _GET我的變量。 在這種情況下,我只是種 使CSS多一點花哨。 如果我們突然過來 我的IDE一秒鐘, 我會告訴你在我的PHP網站 目錄在這裡,get2.php。 我們將在這裡打開它,一些HTML。 顯然,我鏈接入 CSS文件我在說什麼。 我打開表的標籤。 然後這裡是我的foreach循環。 這裡是什麼我 顯示之前的幻燈片。 唯一不同的是我 有這個鍵和值CSS 造型是我申請到它。 但是,這是我做的,是我 跨$ _GET迭代來獲取所有 的鍵值對。 而我打印出來的表格。 而且,很明顯,我格式化鍵 以一種方式,與