php header()
PHP中的header()函數(shù)用于向瀏覽器發(fā)送一個HTTP頭部,用于控制文件的緩存,重定向,以及其他類似的HTTP頭部控制。
header()函數(shù)有很多的用途,這里舉幾個例子:
//1. 控制緩存 header('Cache-Control: no-cache, must-revalidate'); header('Expires: Thu, 01 Jan 1970 00:00:00 GMT'); //2. 重定向 header('Location: http://www.example.com/'); //3. 下載文件 header('Content-Disposition: attachment; filename=example.txt'); header('Content-Type: text/plain'); readfile('example.txt');
控制緩存
通過設置響應頭中的Cache-Control和Expires,可以控制瀏覽器在對同一資源的重復請求時的行為。
例如,我們可以使用以下代碼指示瀏覽器不緩存這個網(wǎng)頁,并要求每次請求都從服務器重新獲取數(shù)據(jù):
header('Cache-Control: no-cache, must-revalidate'); header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
在上面的代碼中,我們使用了Cache-Control和Expires這兩個響應頭來控制緩存。Cache-Control設置了緩存的選項,no-cache表示瀏覽器不應該緩存該內(nèi)容,而must-revalidate告訴瀏覽器在緩存過期之前必須重新獲取內(nèi)容。
Expires指定了一個時間戳,告訴瀏覽器該網(wǎng)頁已經(jīng)過期,必須重新獲取。在上面的代碼中,我們用的是一個較早的時間戳,因此瀏覽器會認為該網(wǎng)頁已經(jīng)過期,每次訪問都會重新獲取。
重定向
通過設置響應頭中的Location來實現(xiàn)重定向。當瀏覽器收到這個響應頭時,它會立即跳轉到指定的URL。例如:
header('Location: http://www.example.com/');
在上面的代碼中,我們使用了Location響應頭,將瀏覽器重定向到http://www.example.com/。
下載文件
通過設置響應頭中的Content-Disposition和Content-Type,可以實現(xiàn)文件下載。
例如,我們可以使用以下代碼來實現(xiàn)下載example.txt文件:
header('Content-Disposition: attachment; filename=example.txt'); header('Content-Type: text/plain'); readfile('example.txt');
在上面的代碼中,我們使用了Content-Disposition頭,它指定了下載文件的名稱和類型。attachment表示文件是要作為附件下載,而不是在瀏覽器中直接打開。filename指定了下載文件的名稱,就是example.txt。Content-Type指定了下載文件的類型,text/plain表示是純文本文件。
總結
header()函數(shù)是一個非常有用的PHP函數(shù),它可以用于控制HTTP頭部,實現(xiàn)重定向,控制瀏覽器緩存,以及實現(xiàn)文件下載等功能。
在使用header()函數(shù)時,一定要記得在代碼中所有的輸出之前調(diào)用它,并且不要有任何的輸出,否則會出現(xiàn)“headers already sent”錯誤。