日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php header

發布時間:2025/4/5 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php header 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

header

(PHP 3, PHP 4, PHP 5)

header -- 發送一個原始 HTTP 標頭

說明

void?header?( string string [, bool replace [, int http_response_code]] )

header()?函數用來發送一個原始?HTTP?標頭。有關?HTTP?標頭的更多內容見?HTTP/1.1 規范。

可選參數?replace?指明是替換掉前一條類似的標頭還是增加一條相同類型的標頭。默認為替換,但如果將其設為?FALSE?則可以強制發送多個同類標頭。例如:

<?php
header
('WWW-Authenticate: Negotiate'
);
header('WWW-Authenticate: NTLM',?false
);
?>

第二個可選參數?http_response_code?強制將 HTTP 響應代碼設為指定值(此參數是 PHP 4.3.0 新加的)。

有兩種特殊的 header 調用。第一種是標頭以字符串“HTTP/”(大小寫不重要)開頭的,可以用來確定要發送的 HTTP 狀態碼。例如,如果配置了 Apache 用 PHP 來處理找不到文件的錯誤處理請求(使用?ErrorDocument?指令),需要確保腳本產生了正確的狀態碼。

<?php
header
("HTTP/1.0 404 Not Found"
)
?>

注:?HTTP 狀態碼標頭行總是第一個被發送到客戶端,而并不管實際的?header()?調用是否是第一個。除非 HTTP 標頭已經發送出去,任何時候都可以通過用新的狀態行調用?header()?函數來覆蓋原先的。

第二種特殊情況是以“Location:”標頭。它不只是把這個標頭發送回瀏覽器,它還將一個?REDIRECT(302)狀態碼返回給瀏覽器,除非之前已經發出了某個?3xx?狀態碼。

<?php
header
("Location: http://www.example.com/");?
/* 重定向瀏覽器 */

/* 確保重定向后,后續代碼不會被執行 */
exit;
?>

注:?HTTP/1.1 標準需要一個絕對地址的?URI?做為?Location:?的參數, 但有一些客戶端支持相對 URI。通常可以使用?$_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF']?及?dirname()?函數來自己從相對 URI 產生出絕對 URI:

<?php header("Location: http://".$_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/".$relative_url); ?>

注:?即使啟用了?session.use_trans_sid,Session ID 也不會隨著 Location 頭信息被傳遞。必須手工用?SID?常量來傳遞。

PHP 腳本通常會產生一些動態內容,這些內容必須不被瀏覽器或代理服務器緩存。很多代理服務器和瀏覽器都可以被下面的方法禁止緩存:

<?php
header
("Cache-Control: no-cache, must-revalidate");?
// HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");?
// 過去的時間
?>

注:?可能會發現即使不輸出上面所有的代碼,網頁也沒有被緩沖。用戶有很多選項可以設置來改變瀏覽器的默認緩存行為。通過發送上述標頭,應該可以覆蓋任何可以導致腳本頁面被緩存的設置。

另外,當使用了 session 時,利用?session_cache_limiter()?函數和?session.cache_limiter?選項可以用來自動產生正確的緩存相關標頭。

要記住?header()?必須在任何實際輸出之前調用,不論是來自普通的 HTML 標記,空行或者 PHP。有一個常見錯誤就是在通過?include()require()?或一些其它的文件存取類函數讀取代碼時,有一些空格或者空行在調用?header()?之前被發送了出去。同樣在一個單獨的 PHP/HTML 文件中這個錯誤也很普遍。

<html>
<?php
/* 這將產生一個錯誤,因為在調 header()
* 之前已經輸出了東西 */
header('Location: http://www.example.com/'
);
?>

注:?自 PHP 4 起,可以通過一些輸出緩沖函數來解決這個問題。代價是把所有向瀏覽器的輸出都緩存在服務器,直到下命令發送它們。可以在代碼中使用?ob_start()?及?ob_end_flush()?來實現這樣的功能,或者通過修改?php.ini?中的?output_buffering?配置選項來實現,也可以通過修改服務器配置文件來實現。

如果想提示用戶保存所發送的數據,例如一個生成的 PDF 文件,可以通過發送?Content-Disposition?標頭提供推薦的文件名來強制瀏覽器彈出一個保存文件對話框。

<?php
// 這樣將會直接輸出一個 PDF 文件
header('Content-type: application/pdf'
);

// 這樣做就會提示下載 PDF 文件 downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"'
);

// 這是 original.pdf 的源文件
readfile('original.pdf'
);
?>

注:?Microsoft Internet Explorer 4.01 中的一個漏洞使得該機制無法正常工作,無解決方案。在 Microsoft Internet Explorer 5.5 中也有個漏洞影響到這一點,升級到 Service Pack 2 或更高版本可以解決。

注:?在安全模式下,如果設定了?WWW-Authenticate?標頭(用于 HTTP 認證)則腳本的 UID 會添加到其中的?realm?部分中去。

---------------------------------------------------------------------------------------

<?php
// 服務器錯誤
header('HTTP/1.1 500 Internal Server Error');

// 重定向到一個新的位置
header(‘Location: http://blog.iterse.com/’);
//用這個header指令來解決URL重寫產生的404 header
header(‘HTTP/1.1 200 OK’);

// 頁面沒找到
header(‘HTTP/1.1 404 Not Found’);

// 訪問受限
header(‘HTTP/1.1 403 Forbidden’);

// The page moved permanently should be used for
// all redrictions, because search engines know
// what’s going on and can easily update their urls.
//頁面被永久刪除,可以告訴搜索引擎更新它們的urls
header(‘HTTP/1.1 301 Moved Permanently’);

// 延遲一段時間后重定向; 也可以使用HTML語法來實現延遲
header(‘Refresh: 3; url=http://blog.iterse.com/’);
echo ‘You will be redirected in 3 seconds’;

// 加載要下載的文件:
header(‘Content-Transfer-Encoding: binary’);
readfile(‘example.zip’);

// 設置內容類型:
header(‘Content-Type: text/html; charset=iso-8859-1′);
header(‘Content-Type: text/html; charset=utf-8′);
header(‘Content-Type: text/plain’); // plain text file
header(‘Content-Type: image/jpeg’); // JPG picture
header(‘Content-Type: application/zip’); // ZIP file
header(‘Content-Type: application/pdf’); // PDF file
header(‘Content-Type: audio/mpeg’); // Audio MPEG (MP3,…) file
header(‘Content-Type: application/x-shockwave-flash’); // Flash animation
?>

-----------------------------------------------------------------------------

在PHP中用header("location:test.php")進行跳轉要注意以下幾點:
1、location和“:”號間不能有空格,否則會出錯。
2、在用header前不能有任何的輸出。
3、header后的PHP代碼還會被執行。
下面是和asp中重定向response.redirect的比較:
例1:
response.redirect "../test.asp"
header("location:../test.php");
兩者區別:
asp的redirect函數可以在向客戶發送頭文件后起作用.

<html><head></head><body>
<%response.redirect "../test.asp"%>
</body></html>
查是php中下例代碼會報錯:
<html><head></head><body>
<?
header("location:../test.php");
?>
</body></html>
只能這樣:
<?
header("location:../test.php");
?>
<html><head></head><body>...</body></html>
即header函數之前不能向客戶發送任何數據.

例2:
asp中
<html><head></head><body>
<%
response.redirect "../a.asp"
response.redirect "../b.asp"
%>
</body></html>
結果是重定向a.asp文件.
php呢?
<?
header("location:../a.php");
header("location:../b.php");
?>
<html><head></head><body></body></html>
我們發現它重定向b.php.
原來在asp中執行redirect后不會再執行后面的代碼.
而php在執行header后,繼續執行下面的代碼.
在這方面上php中的header重定向不如asp中的重定向.有時我們要重定向后,不能執行后面的代碼:
一般地我們用
if(...)
header("...");
else
{
...
}
但是我們可以簡單的用下面的方法:
if(...)
{ header("...");exit();}
還要注意的是,如果是用Unicode(UTF-8)編碼時也會出現問題,需要調整緩存設置.

?

轉載于:https://www.cnblogs.com/shuaixf/archive/2011/10/24/2222406.html

總結

以上是生活随笔為你收集整理的php header的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。