<span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
* 이 예는 데모 만용입니다,이전 부분은 기사의 내용과 관련이 없습니다.
* 여기에 어디에나 배치 할 수 있습니다 PHP 초기화 로직
*/</span>
</span><span><span class="hljs-variable">$start_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// 스크립트 시작 시간을 기록합니다</span></span><span>
</span><span><span class="hljs-comment">// 기사와 관련이없는 일부 코드를 시뮬레이션합니다.</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummy_log</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$message</span></span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'dummy.log'</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-string">' - '</span></span><span> . </span><span><span class="hljs-variable">$message</span></span><span> . PHP_EOL, FILE_APPEND);
}
</span><span><span class="hljs-title function_ invoke__">dummy_log</span></span><span>(</span><span><span class="hljs-string">"기사 페이지를 방문했습니다"</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/**
* PHP 페이지를 사용하는 방법 리디렉션 ob_get_contents() 페이지의 전체 내용을 가져옵니다?작동 방법에 대한 자세한 설명
*
* 존재하다 PHP 개발 중,我们有时需要존재하다执行 header('Location: ...') 리디렉션하기 전에,
* 먼저 저장 또는 분석을 위해 현재 페이지의 전체 출력 내용을 얻으십시오.,출력 버퍼 기능을 사용할 수있는시기입니다.
* ob_get_contents()。
*
* 하나、출력 버퍼링을 사용하는 이유?
* -----------------------
* 존재하다 PHP 가운데,일반적으로 콘텐츠는 브라우저에 직접 출력됩니다,하나旦输出后,PHP 더 이상 보낸 헤더 정보를 수정할 수 없습니다.,
* 这会导致존재하다부르다 header() 리디렉션 할 때 나타납니다 “headers already sent” 오류。
* 출력 버퍼링을 사용하십시오(Output Buffering)할 수 있다 PHP 将输出暂存到内存가운데,그래서 우리는 그것을 읽을 수 있습니다,
* 又能존재하다发送给浏览器前做处理。
*
* 둘、ob_get_contents() 의 역할
* --------------------------
* ob_get_contents() 현재 출력 버퍼의 내용을 얻는 데 사용됩니다.。전제는 사용해야한다는 것입니다 ob_start() 출력 버퍼링이 활성화되었습니다。
*
* 삼、작동 단계
* ----------------
* 1. 존재하다页面最开始부르다 ob_start() 버퍼를 켭니다。
* 2. 페이지 내용을 작성하십시오,이 내용은 직접 출력 대신 버퍼에 일시적으로 저장됩니다.。
* 3. 부르다 ob_get_contents() 버퍼에서 내용을 가져옵니다。
* 4. 존재하다获取内容后,파일에 저장할 수 있습니다、데이터 베이스,또는 분석 및 처리를 수행합니다。
* 5. 最后부르다 ob_end_clean() 또는 ob_end_flush():
* - ob_end_clean():버퍼 컨텐츠를 지우십시오,브라우저에 출력하지 않습니다。
* - ob_end_flush():브라우저에 대한 출력 버퍼 컨텐츠。
* 6. 존재하다버퍼를 청소하십시오后执行 header('Location: ...') 리디렉션。
*
* 네、샘플 코드
* ------------
* 以下示例展示了좋다何존재하다重定向前获取页面内容并保存到文件:
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// 1. 버퍼를 켭니다</span></span><span>
</span><span><span class="hljs-comment">// 2. 페이지 출력 시뮬레이션</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>이 사이트에 오신 것을 환영합니다</h1>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>다음은 페이지의 내용입니다。</p>"</span></span><span>;
</span><span><span class="hljs-comment">// 3. 버퍼 컨텐츠를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$pageContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-comment">// 4. 컨텐츠를 파일에 저장합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'page_backup.html'</span></span><span>, </span><span><span class="hljs-variable">$pageContent</span></span><span>);
</span><span><span class="hljs-comment">// 5. 버퍼를 청소하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span><span><span class="hljs-comment">// 6. 리디렉션을 수행하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: https://www.example.com"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
<span class="hljs-comment">/**
* 다섯、주목해야 할 것
* ------------
* - 必须존재하다任何实际输出前부르다 ob_start(),그렇지 않으면 버퍼가 컨텐츠를 캡처 할 수 없습니다。
* - 만약에 header() 리디렉션 전에 이미 출력이 있습니다,그리고 버퍼링은 켜지지 않습니다,오류를보고합니다。
* - 저장된 컨텐츠에는 현재 컨텐츠 만 포함됩니다 PHP 스크립트 출력,외부 자원이 포함되어 있지 않습니다(좋다 CSS、JS、그림)。
*
* 요약:
* -----
* ob_get_contents() 是존재하다 PHP 페이지 리디렉션 전에 출력을 얻는 데 유용한 도구。
* 성냥 ob_start()、ob_end_clean() 동일한 기능,可以존재하다不影响 HTTP 머리의 경우,
* 完整捕获页面内容用于备份또는处理,로깅에 좋습니다、디버깅 및 캐싱 시나리오。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>