headers_sent

(PHP 3>= 3.0.8, PHP 4 , PHP 5)

headers_sent -- 헤더 전송 여부를 확인합니다.

설명

bool headers_sent ( [string &file [, int &line]])

headers_sent()는 어떠한 HTTP 헤더도 전송하지 않았다면 FALSE를 반환하고, 그 외의 경우에는 TRUE를 반환합니다. 선택적인 fileline 인자를 설정하면, headers_sent()fileline 변수에 출력을 시작한 PHP 소스 파일 이름과 줄 번호를 넣습니다.

헤더 블록이 한번 전송되면 더 이상 header() 함수를 사용하여 헤더를 추가할 수 없습니다. 이 함수를 사용하여 HTTP 헤더 관련 에러 메세지를 방지할 수 있습니다. 다른 옵션은 출력 버퍼링을 사용하는 것입니다.

참고: 선택적인 fileline 인자는 PHP 4.3.0에서 추가되었습니다.

예 1. headers_sent() 사용 예제

<?php

// 헤더가 전송되지 않았으면, 하나를 보냅니다.
if (!headers_sent()) {
    
header('Location: http://www.example.com/');
    exit;
}

// PHP 4.3.0부터의 선택적인 file과 line 인자 사용 예제.
// $filename과 $linenum은 이후의 사용하는 점에 주의하십시오.
// 그에 앞서 값을 지정하지 마십시오.
if (!headers_sent($filename, $linenum)) {
    
header('Location: http://www.example.com/');
    exit;

// 여기에서 에러 처리를 할 수 있습니다.
} else {

    echo
"헤더는 이미 $filename의 $linenum줄에서 보내졌습니다.\n" .
         
"리다이렉트 할 수 없습니다, 대신 이 <a " .
         
"href=\"http://www.example.com\">링크</a>를 클릭하십시오.\n";
    exit;
}

?>

참고: 위 문제에 대한 더욱 자세한 내용은 ob_start(), trigger_error(), header()에 존재합니다.