현재 위치: > 최신 기사 목록> Header () 및 HTML 출력 순서에 대한 자세한 설명

Header () 및 HTML 출력 순서에 대한 자세한 설명

M66 2025-05-18

브라우저가 웹 페이지에 액세스하면 서버는 먼저 HTTP 프로토콜을 통해 브라우저와 통신을 설정합니다. 이 프로세스에는 HTTP 헤더 정보 및 후속 HTML 컨텐츠를 보내는 것이 포함됩니다. HTTP 헤더 정보에는 웹 페이지의 기본 정보 (예 : 컨텐츠 유형, 문자 세트 등)가 포함되어있을뿐만 아니라 브라우저가 페이지 디스플레이, 캐시, 점프 및 기타 동작을 처리하는 방법도 결정합니다.

PHP에서는 헤더 () 함수를 사용하여 HTTP 헤더를 보냅니다. 예를 들어 다음 코드는 브라우저를 새 페이지로 리디렉션합니다.

 <?php
header("Location: http://m66.net/newpage.php");
exit;
?>

이 코드가 실행되면 서버는 리디렉션 헤더 ( 위치 )를 보내고이 헤더 정보에 따라 브라우저가 점프됩니다. 현재 PHP 스크립트는 Exit () 로 인해 실행을 중단하므로 후속 HTML 컨텐츠는 출력되지 않습니다.

2. Header () 와 HTML 출력의 관계

PHP에서 HTTP 헤더는 HTML 출력 전에 전송되어야합니다. 이는 서버가 HTTP 헤더 정보를 먼저 전송하고 HTML 컨텐츠가 후속 데이터이기 때문입니다. HTML 컨텐츠 또는 PHP의 다른 문자를 처음 출력 한 다음 Header () 함수를 호출하면 PHP가 오류를보고하여 "헤더 이미 전송 된 헤더"를 표시합니다.

예를 들어 다음 코드는 오류입니다.

 <?php
echo "Hello World!";  // 산출 HTML 콘텐츠
header("Location: http://m66.net/newpage.php");  // 리디렉션 헤더를 보내십시오
exit;
?>

이 코드가 실행되면 경고가 발생하여 헤더가 전송되었음을 알 수 있습니다. 그 이유는 Echo 명령문이 HTML 컨텐츠를 출력하여 HTTP 헤더가 더 이상 전송되지 않기 때문입니다.

3. 출력 전에 헤더 ()를 호출 해야하는 이유는 무엇입니까?

HTTP 프로토콜에서는 실제 페이지 컨텐츠 (HTML, 그림, CSS 등) 전에 헤더 정보를 보내야합니다. 브라우저는 수신 된 헤더 정보를 기반으로 수신 된 페이지를 처리하는 방법을 결정합니다. 예를 들어, 위치 헤더는 브라우저가 리디렉션되어야하며 컨텐츠 유형은 브라우저에 현재 페이지의 콘텐츠 유형을 알려줍니다.

HTML이 브라우저로 전송되기 시작하면 서버가 더 이상 HTTP 헤더를 변경할 수 없기 때문에 PHP는 HTML 컨텐츠를 출력하기 전에 헤더 () 기능을 통해 이러한 헤더를 보내야합니다. HTTP 헤더를 성공적으로 수정할 수 있도록 (예 : 리디렉션) 출력 전에 Header ()가 호출되어 있는지 확인해야합니다.

4. 출력 버퍼링 솔루션

PHP는 HTML 컨텐츠를 출력하기 전에 헤더 ()를 호출해야하지만 경우에 따라 출력 버퍼링 이이 문제를 해결하는 데 도움이 될 수 있습니다. 출력 버퍼링을 사용하면 PHP가 실제로 전송하기 전에 HTML 컨텐츠를 메모리에 저장할 수 있으므로 후속 호출 Header () 에서 출력 컨텐츠의 영향을받지 않도록 할 수 있습니다.

출력 버퍼링을 사용한 코드의 예는 다음과 같습니다.

 <?php
ob_start();  // 출력 버퍼링을 켭니다
echo "Hello World!";  // 仍然可以输出콘텐츠
header("Location: http://m66.net/newpage.php");  // 헤더를 보내십시오
exit;
?>

위의 코드에서 OB_START () 함수는 출력 버퍼링을 가능하게하므로 ECHO 후 컨텐츠가 출력 되더라도 PHP는 컨텐츠를 즉시 브라우저로 보내지 않고 버퍼에 저장합니다. 이를 통해 헤더 () 함수를 호출하여 "헤더 이미 전송 된"오류가 발생하지 않고 HTTP 헤더를 수정할 수 있습니다.

5. 공통 헤더 () 사용 시나리오

  1. 페이지 리디렉션 : 헤더 ( "위치 : URL")를 사용하여 사용자를 다른 페이지로 리디렉션합니다.

     header("Location: http://m66.net/anotherpage.php");
    exit;
    
  2. 컨텐츠 유형 설정 : 헤더 사용 ( "Content-Type : Type")을 사용하여 페이지의 컨텐츠 유형을 설정하십시오.

     header("Content-Type: application/json");
    echo json_encode($data);
    
  3. CONTROL CACHE : Header ()를 사용하여 캐시 제어를 설정하여 브라우저가 특정 페이지를 캐시 해야하는지 여부를 나타냅니다.

     header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0");
    

6. 요약

PHP의 헤더 () 함수는 HTTP 헤더 정보를 보내는 데 사용되며 호출 순서는 페이지의 출력 순서에 중요합니다. HTTP 헤더는 HTML 컨텐츠 전에 전송되어야하므로 Header ()를 호출 할 때 출력이 없도록해야합니다. 이 문제를 해결하기 위해 출력 버퍼링을 효과적인 솔루션으로 사용할 수 있습니다. 헤더 () 함수와 페이지 출력 순서 간의 관계를 이해하면 잘못된 통화 순서로 인한 오류 및 예기치 않은 동작을 피하는 데 도움이됩니다.

Header () 함수 및 출력 버퍼링을 합리적으로 사용하면 PHP 스크립트가 예상대로 작동하고 불필요한 오류를 피할 수 있습니다.