[Powered by Google Translate] [PHP Web開發] [湯米MacWilliam] [這是CS50。] [CS50.TV] 在這段視頻中,我們將了解如何使用PHP的Web開發。 PHP是一種腳本語言,可以用來實現 在Web服務器上的網站。 Web服務器本質上是一個機器,致力於提供內容 可以通過因特網來訪問。 當你瀏覽到像Facebook.com / home.php網頁 它過著Facebook的Web服務器上的某個地方調用的文件home.php代碼 該服務器上會被執行。 這段代碼很可能會產生一些輸出 這將反過來被從服務器發送 您的Web瀏覽器。 我們將使用CS50家電作為Web服務器。 你的機器可能不會是幾乎一樣強大的機器 在Facebook的數據中心,但你會使用它的web開發都沒有問題。 當我們導航到一個URL是http://localhost/hello.php 我們通過一個叫做Apache的HTTP服務器應用程序配置設備 尋找一個名為hello.php的家/ jh​​arvard /虛擬主機/ localhosts / HTML裡面的默認文件。 如果該文件存在,那麼Apache將使用PHP解釋器 執行PHP代碼中的hello.php。 如果這個文件不存在,那麼Apache將拋出一個未找到錯誤 或404錯誤,你在瀏覽網頁可能已經見過。 讓我們來看看的hello.php。 我們可以在這裡看到的hello.php產生輸出信號線。 當我們通過PHP的hello.php跑去的hello.php在命令行 該輸出被輸出到終端。 通過在Web瀏覽器的URL現在​​,當我們訪問這個文件 其輸出將被發送到web瀏覽器, 所以前往該URL,http://localhost/hello.php, 我們可以看到在我們的網頁瀏覽器的輸出。 讓我們嘗試添加其他的printf對我們的Hello World程序。 好吧,讓我們頭回給Web瀏覽器,看看我們有什麼。 有意思的。 而不是打印在自己的行另一條線,你會看到 在終端,它看起來像它得到了smushed到同一行 作為其他的printf,所以也許新線不PHP中工作。 不完全是。 請記住,HTML通常用於製作網頁 可以通過Web瀏覽器來顯示。 不僅是字符串hello從PHP無效的HTML, 但記得,我們​​不能使用HTML \ n字符 創建一個換行符。 而不是簡單地輸出一個字符串,讓我們輸出有效的HTML。 通過使用我們每一個printf的調用段落標籤 將在自己的行顯示, 所以現在當我們訪問該URL指向valid.php http://localhost/valid.php 我們看到,我們正在尋找的輸出。 現在,如果我們把這個頁面的源代碼 我們可以看到,我們現在在尋找有效的HTML, 我們從PHP創建。 把我們所有的HTML裡面的printf調用 當然是要得到真煩人。 幸運的是,我們可以很容易地混合使用HTML和PHP 在相同的。php文件。 請記住,我們所有的PHP代碼必須在<?php的圍封 和?>。 是不是這些定界符括起來什麼 將簡單地被送到作為輸出到瀏覽器 而不是被執行。 這意味著我們可以做這樣的事情。 我們可以簡單的我們。php文件裡面寫HTML 然後插入PHP塊中的地方,我們想執行一些PHP代碼。 在這裡,我們在文件的頂部定義幾個變量, 後來我們把它們打印出來我們的HTML裡面。 現在,如果我們訪問這個URL,http://localhost/mixed.php 我們可以看到我們的HTML裡面我們評估的PHP。 現在讓我們來看看我們如何能夠傳遞數據 在我們的各種PHP頁面。 與其說 我們可以簡單地說<?=我們想要打印的變量,或者, 和?>。 現在讓我們來看看我們如何能夠傳遞數據 在我們的各種PHP頁面。 我們可以做到這一點的方法之一是信息編碼成一個頁面的URL。 當瀏覽網頁時,你可能已經注意到,一些網址 包含一個?其次是含有&符號和等號的字符串。 URL的這一部分被稱為查詢字符串 這可以讓你有效地將參數傳遞到你的PHP腳本。 查詢字符串包含鍵值對,就像一個哈希表。 等號分隔一鍵及其對應值 而&符號分隔對。 看起來像http://localhost/get.php?foo=bar&baz=qux的URL 在查詢字符串2鍵值對。 關鍵的富映射到值吧, 而關鍵巴茲映射到值QUX。 我們可以在PHP中使用一個特殊的變量很容易地訪問這些鍵值對, $ _GET。 $ _GET是一個關聯數組 這會自動填入查詢字符串數據。 這意味著,給定這個URL $ _GET [“富”] 將等於該字符串的酒吧。 讓我們來看看get.php看到$ _GET在行動。 在這裡,我們使用一個名為的var_dump函數, 這在給定一個數組或其他變量 將它打印出來給我們。 現在,如果我們簡單地訪問http://localhost/get.php 然後我們會看到一個空數組,因為我們沒有提供一個查詢字符串。 如果我們這樣做通過http://localhost/get.php?foo=bar&baz=qux提供了一個查詢字符串 那麼我們可以看到,$ _GET變量將包含 查詢字符串的鍵值對。 但是,如果我們不想把我們的數據的頁面的URL裡面有什麼? 對於大量數據,這可能會導致一些非常醜陋的網址 這將會使我們有光澤的網站看看跛腳。 我們可以轉而把查詢字符串進入人體 在HTTP請求,而不是請求的URL。 然後,我們可以使用PHP的$ _POST變量 訪問鍵值對。 做到這一點的方法之一是通過一個HTML表單。 在這裡,我們有一個簡單的HTML表單。 這裡要注意這種形式的method屬性是後。 這告訴瀏覽器將表單的鍵值對 入請求,而不是URL的身體。 如果我們要使用的值獲得該屬性 然後表單的鍵值對,而不是會進入查詢字符串, 所以我們可以通過$ _GET再次訪問它們。 表單的action屬性告訴瀏覽器發送的數據。 在這裡,我們的2輸入元素都有名稱屬性。 的名稱屬性的值將作為鑰匙進入我們的數據, 與文本輸入的值將成為這些鍵的值。 現在讓我們來看看post.php, 這種形式被提交到該文件。 就像我們以前那樣,我們只是顯示了$ _POST變量的內容。 讓我們定位到表格連同http://localhost/form.php。 現在,當我們提交表單,我們可以看到,從form.php的數據 傳遞,而不附加一個查詢字符串的URL post.php。 現在,我們已經看到了2個不同的PHP頁面之間傳遞數據的方式, GET和POST。 在我們的例子中,我們使用了2個不同類型的HTTP請求。 正如你所期望的,一個GET請求時使用的填充我們 從URL和POST請求$ _GET使用 當我們填入$ _POST。 在設計你的Web應用程序是一個很好的經驗規則,使用GET請求 當你的應用程序將只讀取數據,和POST請求 當你的應用程序將數據寫入。 例如,搜索查詢將讀取你的應用程序的數據, 所以一個GET請求是有道理的。 在另一方面,你的應用程序將通過一個類似登記表寫入數據, 所以POST請求會更有意義,這就是的一些技術概述 我們將使用在CS50使用PHP創建網站。 我的名字是湯米,這是CS50。 [CS50.TV]