PHP中的header函數(shù)是一種非常常用的函數(shù),它可以在HTTP響應(yīng)頭中設(shè)置各種信息,如做出重定向、提示文件類型、設(shè)置響應(yīng)碼等。下面我們就一起來看看PHP header函數(shù)的具體用法以及一些常見問題的解決方法。
首先說一下header函數(shù)的基本用法,在PHP中通過header函數(shù)可以設(shè)置HTTP響應(yīng)頭信息,該函數(shù)的語法如下:
header(string, replace, http_response_code)其中,string參數(shù)是必須的,用于設(shè)置HTTP響應(yīng)頭的具體信息,replace是可選參數(shù),如果為true,則覆蓋之前的相同信息,反之則不覆蓋;http_response_code也是可選參數(shù),用于設(shè)置HTTP響應(yīng)碼。下面我們給出一些常見的例子,來更直觀的了解其用法。
一、做出重定向:
header("Location: http://www.baidu.com"); exit();這里的exit()函數(shù)是必須的,因?yàn)閔eader函數(shù)只是設(shè)置了HTTP響應(yīng)頭的信息,如果不退出程序,那么客戶端依舊會(huì)執(zhí)行之前的程序,所以要用exit函數(shù)讓程序在此處退出。
二、提示文件類型:
通過header函數(shù),我們還可以設(shè)置響應(yīng)文件的類型,如下面的代碼可以告訴瀏覽器返回的是JPEG圖片:header('Content-type: image/jpeg'); echo $image_data;//$image_data是JPEG圖片的二進(jìn)制數(shù)據(jù)
三、設(shè)置響應(yīng)碼:
下面的代碼可以返回響應(yīng)碼為404的頁面:header('HTTP/1.1 404 Not Found'); echo '沒有找到頁面';
四、解決header函數(shù)報(bào)錯(cuò),出現(xiàn)“Header already sent”錯(cuò)誤:
當(dāng)PHP代碼中輸出了一些內(nèi)容到瀏覽器,而此時(shí)調(diào)用header函數(shù)時(shí),可能會(huì)出現(xiàn)“Header already sent”錯(cuò)誤,這是因?yàn)閔eader函數(shù)必須在輸出之前調(diào)用。解決方法是要么提前調(diào)用header函數(shù),要么使用ob_start()函數(shù)開啟緩存,待header函數(shù)執(zhí)行后再輸出,如下面這段代碼:ob_start(); header("Location: http://www.baidu.com"); ob_end_flush();
五、解決IE瀏覽器下的下載問題:
在IE瀏覽器中,如果通過PHP程序返回下載文件,會(huì)出現(xiàn)文件名亂碼的情況,解決方法也很簡單,只需要在header函數(shù)中增加Content-Disposition信息即可:header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename='.$filename); readfile($file_path);//$filename是文件名,$file_path是文件路徑
總結(jié):
通過本文的介紹,我們了解到了PHP header函數(shù)的基本使用,以及如何解決常見的問題,如重定向、設(shè)置響應(yīng)碼、提示文件類型等。header函數(shù)雖然看似簡單,卻有著豐富的用途,在實(shí)際開發(fā)中要善加利用。下一篇css不允許超出