header("http/1.0 400 bad request"); 返回400錯誤
header("http/1.0 404 not found"); 返回404錯誤
header("location:http://$host$uri/$extra"); 跳轉
//設定nocache ,過期
1。php header() 函式
網上很多資料這樣寫:php的函式header()可以向瀏覽器傳送status標頭,如 header("status: 404 not found")。
但是我發現實際上瀏覽器返回的響應卻是:
查了一些資料,正確的寫法是:
第一部分為http協議的版本(http-version);第二部分為狀態**(status);第三部分為原因短語(reason-phrase)。若要想讓瀏覽器不是從 proxy 或 cache 中取得頁面,可以使用下列的標頭
header("expires: mon, 26 jul 1997 05:00:00 gmt");
header("last-modified: " . gmdate("d, d m y h:i:s") . "gmt");
header("cache-control: no-cache, must-revalidate");
header("pragma: no-cache");
具體含義下面解釋。
2。禁止頁面在ie中快取
http響應訊息頭部設定:
4。header函式前輸入內容
一般來說在header函式前不能輸出html內容,類似的還有setcookie() 和 session 函式,這些函式需要在輸出流中增加訊息頭部資訊。如果在header()執行之前有echo等語句,當後面遇到header()時,就會報出「warning: cannot modify header information - headers already sent by ....」 錯誤。就是說在這些函式的前面不能有任何文字、空行、回車等,而且最好在header()函式後加上exit()函式 。例如下面的錯誤寫法,在兩個php**段之間有乙個空行:
<?php
//some code here
?>
//這裡應該是乙個空行
原 因是:php指令碼開始執行 時,它可以同時傳送http訊息頭部(標題)資訊和主體資訊. http訊息頭部(來自 header() 或setcookie() 函式)並不會立即傳送,相反,它被儲存到乙個列表中. 這樣就可以允許你修改標題資訊,包括預設的標題(例如content-type 標題).但是,一旦指令碼傳送了任何非標題的輸出(例如,使用 html 或 print()呼叫),那麼php就必須先傳送完所有的header,然後終止 httpheader.而後繼續傳送主體資料.從這時開始,任何新增或修改header資訊的試圖都是不允許的,並會傳送上述的錯誤訊息之一。
解決辦法:
修 改php.ini開啟快取(output_buffering),或者在程式中使用快取函式ob_start(),ob_end_flush()等。原理 是:output_buffering被啟用時,在指令碼傳送輸出時,php並不傳送httpheader。相反,它將此輸出通過管道(pipe)輸入到動 態增加的快取中(只能在php4.0中使用,它具有**化的輸出機制)。你仍然可以修改/新增header,或者設定cookie,因為header實際 上並沒有傳送。當全部指令碼終止時,php將自動傳送http header到瀏覽器,然後再傳送輸出緩衝中的內容。
PHP 中 header 函式的作用
php 中 header 函式的作用是給客戶端傳送頭資訊。什麼是頭資訊?這裡只作簡單解釋,詳細的自己看http協議。在http協議中,伺服器端的回答 response 內容包括兩部分 頭資訊 header 和 體內容,這裡的頭資訊不是html中的部分,同樣,體內容也不是 body 頭資訊是使用者看不...
PHP中header的作用
php 中 header 函式的作用是給客戶端傳送頭資訊。什麼是頭資訊?這裡只作簡單解釋,詳細的自己看http協議。在http協議中,伺服器端的回答 response 內容包括兩部分 頭資訊 header 和 體內容,這裡的頭資訊不是html中的部分,同樣,體內容也不是 body 頭資訊是使用者看不...
PHP之header函式詳解
php的header函式是最常用的函式之一,用於向客戶端傳送http頭資訊。通過的用法如設定編碼 傳送http狀態值以及重定向。上述兩個例子分別是設定utf8編碼和傳送404狀態。header重定向 header location 其他常用的header用法 header永久性重定向,一般301與h...