PHP 출력 버퍼와 헤더 발송 문제 상세 설명
headers_sent()
이 함수는 헤더를 보내는 상태를 알려 줍니다.브라우저에 출력을 보내면, 방향을 바꾸는 헤더 함수를 사용해서는 안 됩니다.이러한 오류를 방지하기 위해 headers_sent () 함수는 헤더의 발송 상태를 검사합니다.헤더 상태에 따라 TRUE 또는 FALSE를 반환합니다.php 스크립트를 실행할 때, 출력을 버퍼에 저장한 다음 브라우저에 보냅니다.단, 이것은 당신의 서버 php에 달려 있습니다.출력 버퍼를 열거나 닫아야 합니다.
output_buffering = Off
이제 출력 버퍼를 닫았기 때문에 모든 출력이 브라우저로 전송됩니다.우리는 하나의 예를 통해 공부합시다.
<?Php
echo 'Hello p2hp.com';
echo "<br><br>";
if (!headers_sent()) {
echo " header , header cookie ";
}else{
echo " Header , header cookie ";
}
?>
상기 코드의 출력은 당신의 php에 달려 있습니다.ini 설정.우리에게 있어서 우리의 php.ini 기본값은 다음과 같습니다.output_buffering 4096 4096
위의 첫 줄 코드에서, 우리는 출력을 브라우저에 보낼 것이지만, 여전히 header_sent () 는 헤더를 보내지 않았습니다. 버퍼가 브라우저에 출력을 보내지 않았기 때문입니다.그래서 저희가 이런 출력을 받을 거예요.
헤더가 없으면 헤더나 쿠키를 보낼 수 있습니다
따라서 브라우저에 출력을 보내려면 출력 버퍼 용량을 다 소모해야 합니다.여기는 4096입니다.따라서 제한을 초과하기 위해 브라우저에 더 많은 출력을 보내고 헤더의 발송 상태를 확인하려고 합니다.
<?php
for ($i=1; $i<=372; $i++) {
echo "p2hp.com - ";
}
echo "<br><br>";
if (!headers_sent()) {
// header , header cookie //
echo ' header , header cookie';
// header("HTTP/1.1 301 Moved Permanently");
// header ("Location: mynewpage1.html");
exit;
} else {
// Header , header cookie //
echo 'Header , header cookie ';
header("Location: mynewpage1.html");// Warning: Cannot modify header information - headers already sent by xxxxx
}
위의 코드에서 $i 값을 늘리거나 줄여 for 순환을 조정할 수 있습니다.순환 수가 높을수록 더 많은 데이터가 버퍼에 발표될 것이다.$i의 최대치를 추가하여 headers_ 보기sent()가 어디에서 TRUE로 변경됩니까?flush () 를 사용하여 버퍼 출력을 브라우저에 강제로 보낼 수 있습니다.그러나 이것은 서버에 달려 있고 다른 방식으로 작동할 수 있다.
참조 https://www.plus2net.com/php_tutorial/headers_sent.php
총결산
PHP 출력 버퍼와 헤더의 발송에 관한 이 글은 여기까지 소개합니다. 더 많은 관련 PHP 출력 버퍼 헤더의 발송 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.