현재 위치: > 최신 기사 목록> 헤더를 설정할 수 있는지 확인하려면 headers_sent ()를 사용하십시오.

헤더를 설정할 수 있는지 확인하려면 headers_sent ()를 사용하십시오.

M66 2025-05-17

PHP에서 헤더 () 함수는 리디렉션, 쿠키 설정, 컨텐츠 유형 수정 등과 같은 원래의 HTTP 헤더 정보를 보내는 데 사용됩니다. 그러나 HTTP 헤더 정보 (예 : HTML, echo, print 등) 전에 HTTP 헤더 정보를 보내야합니다. 출력이 시작되면 PHP가 자동으로 HTTP 헤더를 전송하기 때문입니다.

Header ()를 호출 할 때 오류를 피하기 위해 Headers_Sent () 함수를 사용하여 헤더가 전송되었는지 여부를 감지 할 수 있습니다.

headers_sent () 란 무엇입니까?

Headers_Sent ()는 HTTP 헤더 정보가 브라우저로 전송되었는지 확인하기 위해 PHP가 제공하는 내장 기능입니다. 기본 사용량은 다음과 같습니다.

 if (!headers_sent()) {
    header('Location: https://m66.net/some-page');
    exit;
}

헤더가 아직 전송되지 않은 경우 Headers_Sent ()는 False를 반환하여 Header ()가 안전하게 호출 될 수 있음을 나타냅니다. 사실 이라면 헤더가 전송되었고 header ()를 호출 할 때 오류 가보고된다는 것을 의미합니다.

특정 전송 위치를 확인하십시오

headers_sent ()는 헤더 출력의 위치 (파일 및 줄 번호)를 얻기 위해 두 개의 매개 변수를 수락 할 수 있습니다.

 if (headers_sent($file, $line)) {
    echo "HTTP 머리가 이미 있습니다 $file 문서의 첫 번째 $line 라인 보내기。";
} else {
    header('Location: https://m66.net/some-other-page');
    exit;
}

이 방법은 특히 디버깅에 적합하며 사전에 출력 할 코드의 위치를 ​​찾는 데 도움이됩니다.

일반적인 장면

1 ??? 페이지 리디렉션

리디렉션을 수행하기 전에 출력이 없는지 확인해야합니다.

 if (!headers_sent()) {
    header('Location: https://m66.net/login');
    exit;
} else {
    echo "리디렉션 할 수 없습니다,이미 출력이 있기 때문입니다。";
}

2 ?? 쿠키를 설정하십시오

마찬가지로 SetCookie ()는 HTTP 헤더에 의존하므로 확인하십시오.

 if (!headers_sent()) {
    setcookie('user', 'JohnDoe', time() + 3600, '/');
} else {
    echo "설정할 수 없습니다 cookie,헤더가 전송 되었기 때문에。";
}

팁 : 출력 버퍼링을 켜십시오

헤더 보내기 오류를 종종 만나면 스크립트 시작시 출력 버퍼링 활성화를 고려하십시오.

 ob_start();

이러한 방식으로 스크립트가 끝나거나 OB_end_flush ()가 호출 될 때까지 즉시 브라우저로 보내지 않고 모든 출력이 버퍼를 먼저 입력하여 헤더 정보를 안전하게 보낼 시간을 더합니다.