headers_sent
(PHP 4, PHP 5, PHP 7, PHP 8)
headers_sent — 檢測 HTTP 頭是否已經發送
說明
   headers_sent(string 
  &$file = ?, int &$line = ?): bool檢測 HTTP 頭是否已經發送。
HTTP 頭已經發送時,就無法通過 header() 新增更多頭欄位。 使用此函式起碼可以防止 HTTP 頭出錯。另一個解決方案是用 輸出緩衝。
參數
- 
file
- 
      若設定了可選參數 fileandline, headers_sent() 會把 PHP 檔名放在file變數里, 輸出開始的行號放在line變數里。
- 
line
- 
      輸出開始的行號。 
返回值
   HTTP 頭未發送時,headers_sent() 返回 false,否則返回 true。
  
範例
示例 #1 使用 headers_sent() 的例子
<?php
// 沒有 HTTP 頭就發送一個
if (!headers_sent()) {
    header('Location: http://www.example.com/');
    exit;
}
// 使用 file 和 line 參數選項的例子
// 注意 $filename 和 $linenum 用於下文中使用
// 所以不要提前為它們賦值
if (!headers_sent($filename, $linenum)) {
    header('Location: http://www.example.com/');
    exit;
// 很有可能在這裡觸發錯誤
} else {
    echo "Headers already sent in $filename on line $linenum\n" .
          "Cannot redirect, for now please click this <a " .
          "href=\"http://www.example.com\">link</a> instead\n";
    exit;
}
?>
註釋
注意:
數據頭只會在SAPI支援時得到處理和輸出。
參見
- ob_start() - 打開輸出控制緩衝
- trigger_error() - 產生一個使用者級別的 error/warning/notice 資訊
- headers_list() - 返回已發送的 HTTP 響應頭(或準備發送的)
- header() - 發送原生 HTTP 頭 中有更多相關細節的討論。