PHP 프로그램을 작성할 때 이런 문제가 자주 발생합니다.
header() 함수, session() 함수, 쿠키 함수 사용 등에도 문제가 있을 수 있습니다
PHP 프로그램 다음 오류가 보고됩니다.
헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다(출력은
해더 정보를 수정할 수 없습니다. 이 오류를 해결하려면 먼저 http 프로토콜 을 이해해야 합니다. http 프로토콜을 사용하면 서버는 html 파일을 출력하는데, html 파일은 두 부분으로 구성되는데, 한 부분은 우리 페이지 자체의 데이터이고, 다른 부분은 html 페이지의 헤더 정보입니다. 정보에는 페이지가 표시되는 인코딩 형식, html 데이터의 크기, 점프 여부, 캐시 여부 등과 같은 많은 데이터가 포함되어 있습니다. 이러한 html 헤더 파일 정보는 일단 생성되면 수정할 수 없습니다. . 이것이 위에서 보고된 오류의 원인입니다. 두 번째, PHP 캐싱 메커니즘 PHP 프로그램을 실행하는 동안 캐시의 두 부분이 있습니다. 하나는 메모리에 있는 프로그램의 데이터 캐시로 이해되는 프로그램 캐시이고, 다른 하나는 PHP에서 제공하는 캐시 모듈입니다. 캐시가 켜져 있으면 프로그램에 에코 데이터가 있으면 PHP 프로그램 실행이 완료될 때까지 HTML 파일을 직접 생성하는 대신 데이터가 캐시에 저장됩니다. 모듈에 의해 캐시된 데이터도 HTML 코드를 생성합니다. 다음은 두 가지 예입니다. 1. 캐싱이 활성화되어 있지 않습니다(기본값).
<?php echo "123"; header("Content-type:text/html;charset=utf-8") echo "456"; ?>
<?php ob_start() ; //开启页面缓存 echo "123"; header("Content-type:text/html;charset=utf-8") echo "456"; ?>
ob_get_contents() 이 함수는 내부 버퍼의 내용을 반환합니다. 이는 이러한 출력을 문자열로 변환하는 것과 같습니다. ()는 내부 버퍼의 길이를 반환합니다.
ob_end_flush()는 출력 버퍼를 종료하고 해당 버퍼의 내용을 출력합니다.
ob_end_clean() End. 출력 버퍼를 제거하고 버퍼의 내용을 버립니다.