<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,사전 코드 블록을 보여줍니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-variable">$now</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 시간:<span class="hljs-subst">$now</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
존재하다PHP개발 중,작동하다HTTP응답 헤더는 매우 일반적인 요구 사항입니다。`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`기능을 통해 원본을 보낼 수 있습니다HTTP헤더 정보,그리고`</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>()`函数则可以检测헤더 정보是否已经发送。이 두 기능을 합리적으로 결합합니다,能够有效避免因重复发送헤더 정보导致的错误,从그리고提升程序的健壮性和用户体验。
</span><span><span class="hljs-comment">## 1. `header()`기능 소개</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`원본을 보내는 데 사용됩니다HTTP머리。예를 들어,점프를 설정하십시오、컨텐츠 유형을 지정합니다、제어 캐시 등:
```php
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/json'</span></span><span>);
</span></span>
그러나 HTTP 헤더가 전송 된 경우 (예를 들어 일부 HTML 또는 공백 문자가 출력 된 경우) Calling Header ()는 "헤더 정보를 수정할 수 없음 - 헤더가 이미 전송 된 헤더"의 오류를 트리거합니다.
Headers_Sent ()는 HTTP 헤더가 클라이언트로 전송되었는지 여부를 감지하는 데 사용됩니다. 일반적인 사용 :
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>()) {
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Headers already sent, cannot redirect.'</span></span><span>;
}
</span></span>
프로그램 예외를 유발하기 위해 헤더 정보가 전송 된 후 Header () 호출을 피할 수 있습니다.
출력을 피하려면 Header ()를 미리 호출하십시오
PHP가 컨텐츠를 출력하면 HTTP 헤더가 자동으로 전송됩니다. 따라서 Header ()가 호출되기 전에 Echo, Print 또는 HTML 출력이 없는지 확인하십시오.
헤더 정보의 반복 전송을 방지하기 위해 감지를 위해 headers_sent () 를 사용하십시오 . <br> 복잡한 프로그램 또는 템플릿 시스템에서는 출력 순서를 완전히 제어하기가 어려울 수 있으며 Headers_Sent ()를 사용하여 확인하는 것이 특히 중요합니다.
헤더가 전송되었다는 것을 알게되면 대안을 받으십시오 <br> 예를 들어, JavaScript를 사용하여 프로그램 충돌을 피하기 위해 수동 링크를 점프하거나 제공하십시오.
출구 또는 다이와 함께 사용하십시오 <br> 리디렉션을 보내면 후속 코드 실행을 방지하기 위해 스크립트를 즉시 종료해야합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 어딘가에서 출력되었을 수 있다고 가정하십시오</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"방문에 오신 것을 환영합니다!"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$line</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: http://example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<script>window.location.href='http://example.com';</script>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>페이지 점프가 실패했습니다,클릭하십시오 <a href='http://example.com'>여기</a>。</p>"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Headers already sent in <span class="hljs-subst">$file</span></span></span><span> on line </span><span><span class="hljs-subst">$line</span></span><span>.");
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Header () 와 Headers_Sent () 의 조합은 HTTP 헤더 작업의 보안 및 유연성을 크게 향상시킬 수 있습니다. 특히 대규모 프로젝트 나 프레임 워크 에서이 탐지 메커니즘은 출력 순서의 오류로 인한 치명적인 오류를 피할 수 있으므로 코드를보다 강력하고 유지 관리하기가 더 쉽습니다. 우수한 출력 제어 습관을 개발하고 헤드 탐지 사용에 대한 인식은 PHP 개발에서 중요한 모범 사례입니다.
<span></span>