php中的header()函數(shù)是一個非常常用的函數(shù),主要用于向瀏覽器發(fā)送頭信息,以便告訴瀏覽器如何展示頁面。該函數(shù)常用于重定向頁面、防止頁面緩存等方面。
首先,我們來看一個實際應(yīng)用中常見的例子。我們有一個頁面,希望在訪問時,如果用戶沒有登錄,則直接跳轉(zhuǎn)到登錄頁面。那么可以這樣實現(xiàn):
if (!$_SESSION['userid']) { header('Location: /login.php'); exit(); }
可以看到,當(dāng) $_SESSION['userid'] 不存在時,我們使用header()函數(shù)將頁面重定向到/login.php頁面。同時我們使用了exit()函數(shù)來終止執(zhí)行后續(xù)的php代碼。
header()函數(shù)還可以用于設(shè)置http協(xié)議頭,比如防止頁面緩存,強制頁面刷新等。比如我們希望頁面每次都強制刷新,那么可以使用以下代碼:
header('Cache-Control: no-cache, must-revalidate'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache');
可以看到,我們設(shè)置了Cache-Control、Expires和Pragma三個頭信息,來防止瀏覽器對頁面進(jìn)行緩存。
除此之外,header()函數(shù)還可以設(shè)置content-type頭信息,來指定頁面的內(nèi)容類型。比如我們有一個頁面輸出的是json格式的數(shù)據(jù),那么可以這樣設(shè)置:
header('Content-type: application/json'); echo json_encode(['name' =>'jack', 'age' =>18]); exit();
上面的示例中,我們輸出了一個以json格式的數(shù)組,同時使用header()函數(shù)設(shè)置content-type信息,告訴瀏覽器這是一個json格式的響應(yīng)內(nèi)容。
最后,需要注意的是,header()函數(shù)需要在輸出任何內(nèi)容之前調(diào)用,否則可能導(dǎo)致報錯。同時還需要注意,如果header()和echo等函數(shù)在同一個php文件中,那么在調(diào)用header()函數(shù)之前,需要確保php文件中沒有任何輸出。這是因為http協(xié)議頭只能出現(xiàn)一次,如果在header()函數(shù)之前有輸出語句,那么該頁面的header信息將會被解析為body信息,導(dǎo)致無法實現(xiàn)頁面重定向等功能。