溫馨提示×

PHP HEADERS_SENT錯誤如何捕獲

PHP
小樊
96
2024-10-23 09:47:15
欄目: 編程語言

在 PHP 中,當輸出已經發送給瀏覽器時,嘗試再設置 HTTP 頭部信息會導致 “Headers already sent” 錯誤。為了捕獲這個錯誤,你可以使用 ob_start()ob_get_clean() 函數來捕獲輸出緩沖區的內容,并在發送任何頭部信息之前進行檢查。

下面是一個示例代碼:

<?php
// 檢查是否已經發送了頭部信息
if (headers_sent()) {
    // 如果已經發送了頭部信息,則輸出錯誤消息并退出腳本
    echo 'Headers already sent in ' . __FILE__ . ' on line ' . __LINE__;
    exit(1);
}

// 開始輸出緩沖區
ob_start();

// 在這里編寫你的 PHP 代碼
echo 'Hello, World!';

// 清空輸出緩沖區并捕獲其內容
$output = ob_get_clean();

// 檢查是否有輸出
if ($output !== '') {
    // 如果有輸出,則發送頭部信息
    header('Content-Type: text/html; charset=utf-8');
    echo $output;
} else {
    // 如果沒有輸出,可以在這里處理其他邏輯
}
?>

在這個示例中,我們首先檢查是否已經發送了頭部信息。如果已經發送了頭部信息,我們輸出錯誤消息并退出腳本。接下來,我們使用 ob_start() 開始輸出緩沖區,然后編寫你的 PHP 代碼。最后,我們使用 ob_get_clean() 清空輸出緩沖區并捕獲其內容。如果有輸出,我們會發送頭部信息并輸出內容;如果沒有輸出,你可以在這里處理其他邏輯。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女