php中的header()函數是用來設置HTTP響應頭的,可以通過設置HTTP響應頭來授權、重定向用戶并設置cookie等,是很常用的函數之一。
舉個例子,如果有一個下載頁面,需要在下載文件之前判斷用戶是否登錄,可以使用header()函數將用戶重定向到登錄頁面,如果用戶已經登錄則將文件輸出到瀏覽器進行下載。
上面的代碼中,如果用戶未登錄則會被重定向到login.php頁面,如果用戶已登錄則會下載名為download.pdf的文件。其中header('Content-Disposition: attachment; filename="download.pdf"')用來設置輸出文件名。這個例子中演示了header()函數對用戶重定向和輸出文件的控制。
另一個例子是設置響應編碼和緩存控制:
上面的代碼中,header('Content-Type: text/html; charset=utf-8')設置響應內容的編碼為utf-8,header('Cache-Control: no-cache, no-store, must-revalidate')設置緩存控制,告訴瀏覽器不緩存響應內容,header('Expires: 0')告訴瀏覽器過期時間為0。
在AJAX應用中,通過header()函數可以設置響應內容的類型和響應頭信息,下面是一個例子:
'value')); ?>
上面的代碼中,header('Content-Type: application/json')設置響應內容的類型為json,header('Cache-Control: no-cache, no-store, must-revalidate')、header('Pragma: no-cache')、header('Expires: 0')設置緩存控制,json_encode(array('key' =>'value'))函數輸出json格式的響應內容。
總之,header()函數在控制HTTP響應頭方面提供了很多靈活性,可以實現很多授權、重定向、緩存控制和響應類型設置等功能。