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를 반환합니다. 선택적인
file과 line 인자를
설정하면, headers_sent()는
file과 line 변수에 출력을
시작한 PHP 소스 파일 이름과 줄 번호를 넣습니다.
헤더 블록이 한번 전송되면 더 이상 header() 함수를
사용하여 헤더를 추가할 수 없습니다. 이 함수를 사용하여 HTTP 헤더 관련
에러 메세지를 방지할 수 있습니다. 다른 옵션은 출력 버퍼링을 사용하는 것입니다.
참고:
선택적인 file과 line
인자는 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()에 존재합니다.