前言
最近在系統的學習 PHP ,參考的資料是《PHP程式設計》+ 官方文件(如果你有好的學習資料,歡迎推薦給我)。雖然這本《PHP程式設計》是基於 PHP5 的,但我筆記裡的程式碼,全部在 PHP 7.2 的環境裡測試過,是能夠執行的。另,本筆記中只記錄我模糊不清的知識。
變數
PHP 可建立包含 EGPCS(environment、GET、POST、cookie、serever) 資訊的 6 個全域性陣列。
- $_COOKIE : 包含作為請求中 cookie 數值的部分,陣列的鍵名是 cookie 的名字。
- $_GET : 包含作為 GET 請求中引數的部分,陣列的鍵名是表單引數。
- $_POST : 包含作為 POST 請求中引數的部分,陣列的鍵名是表單引數。
- $_FILES : 包含上傳檔案的資訊。
- $_SERVER : 包含網頁伺服器中有用的資訊。
- $_ENV : 包含環境變數數值,陣列的鍵名是環境變數的名字。
- \$_REQUEST : 包含 \$_GET、 \$_POST、 \$_COOKIES 所有資訊的一個組合。
這些變數不僅是全域性的,而且在函式定義內部也是可見的。
伺服器資訊
$_SERVER 陣列包含大量有用的網頁伺服器資訊。大部分資訊來自於 CGI 規範要求的環境變數。
- PHP_SELF : 當前執行指令碼的檔名,相對於文件根目錄。
- SERVER_SOFTWARE : 伺服器識別符號(例如, Apache/1.3.33(Unix)mod_perl/1.26 PHP/ 5.0.4)。
- SERVER_NAME : 從當前引用的 URL 的主機名、DNS 別名或用於自引用 URL 的 IP 地址(例如, www.baidu.com)。
- GETEWAY_INTERFACE : 伺服器使用的 CGI 標準的版本(例如, CGI/1.1 )。
- SERVER_PROTOCAL : 請求頁面時通訊協議的名稱和版本(例如, HTTP/1.1 )。
- SERVER_PORT : 伺服器傳送請求的埠號(例如, 80 )。
- REQUEST_METHOD : 客戶端獲取頁面所使用的方法(例如, GET )。
- PATH_INFO : 客戶端提供的真實路徑(例如, /list/users )。
- PATH_TRANSLATED : 根據 PATH_INFO 的值轉換到伺服器的基本路徑(例如, /home/httpd/htdocs/list/users )。
- SCRIPT_NAME : 當前頁面的 URL 路徑,對當前自引用指令碼很有用(例如, /~me/menu.php )。
- QUERY_STRING : URL 中 ? 後面的所有資訊(例如, name=Ferd+age=35 )。
- REMOTE_HOST : 請求當前頁面的使用者的主機名。如果伺服器沒有 DNS ,這就是空的,只有 REMOTE_ADDR 的資訊。
- REMOTE_ADDR : 一個包含請求當前頁面 IP 地址的字串(例如, 192.168.0.250 )。
- AUTH_TYPE : 如果頁面是受密碼保護的,這代表保護頁面的認證方法(例如, basic )。
- REMOTE_USER : 如果頁面是受密碼保護的,這是在認證客戶端的使用者名稱(例如, Yi )。注意,密碼是無法獲取的。
- REMOTE_IDENT : 如果伺服器配置了身份認證系統 identd(RFC 931) ,這是從主機獲取的使用者名稱。由於很容易偽證,不要使用該字串做認證。
- CONTNT_TYPE : PUT 和 POST 附加資訊的內容型別(例如, x-url-encoded )。
- CONTENT_LENGTH : PUT 和 POST 附加資訊的長度(例如, 3952 )。
- HTTP_USER_AGENT : 瀏覽器的標識字串(例如, Mozilla/5.0(Windows 2000;U)Opera 6.0[en] )。
- HTTP_REFERER : 瀏覽器表示當前頁面來自於哪個頁面(例如, http://www.examplle.com/last_page.html)。
響應頭
當你想發回非 HTML 的頁面、設定頁面的過期時間、重定向客戶端瀏覽器或者生成 HTTP 錯誤,需要使用 header() 函式。
不同的內容型別
Content-Type 定義返回文件的型別。
通常為 "text/html"
指定為 HTML 文件。也可以是 "text/plain"
會強制把頁面當作純文字。
重定向
傳送到瀏覽器的一個新的 URL ,被稱為重定向,你可以設定 Location 頭。
header("Location: http://www.example.com/elsewhere.html");
exit();
過期
瀏覽器會明確地告訴瀏覽器和伺服器之間任何代理快取一個文件要過期的確定時間。設定 Expires 頭。
header("Expires: Fri, 18 Jan 2006 05:30:00 GMT");
//3 小時後過期
$now = time();
$then = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 60 * 60 * 3);
header("Expires: {$then}");
認證
HTTP 認證通過請求頭和響應頭來完成。瀏覽器可以在請求頭中傳送使用者名稱和密碼(授權),如果授權沒有傳送或者不符合,伺服器會傳送“401 Unauthorized” 相應通過 WWW-Authenticate 頭認證區域。
感謝你看到了這裡。如果文章有錯誤,請評論指正,謝謝!
本作品採用《CC 協議》,轉載必須註明作者和本文連結