PHP 개발에서 페이지 리디렉션에 Header () 함수를 사용하는 것이 일반적인 관행입니다. 예를 들어:
header("Location: http://m66.net/anotherpage.php");
exit;
위의 코드는 사용자를 http://m66.net/anotherpage.php 페이지로 리디렉션합니다. 리디렉션은 매우 간단하고 일반적인 작업이지만 때로는 특히 Header () 함수를 사용할 때 빈 페이지가 발생합니다. 이 기사에서는 페이지가 비어있는 이유를 설명하고 문제 해결 및 솔루션을 제공합니다.
HTML 출력 전에 헤더 () 함수를 호출해야합니다. HTML 컨텐츠 (예 : 공백, 라인 브레이크, 오류 메시지 등)가 Header () 함수를 호출하기 전에 출력 된 경우 PHP는 오류를 던지고 리디렉션이 적용되지 않으므로 결국 페이지가 비워 질 수 있습니다.
해결책:
헤더 () 함수에 이전에 출력이 없는지 확인하십시오. 파일의 시작과 Header () 호출 사이에 공백, 라인 브레이크 또는 HTML 컨텐츠가 있는지 확인할 수 있습니다.
예상치 못한 출력을 피하기 위해 파일의 시작 부분에 공백이나 신생이없는 것이 가장 좋습니다. 파일의 BOM (바이트 주문 마커)을보고 추가 공백 문자가 포함되지 않도록 파일이 올바르게 인코딩되어 있는지 확인할 수 있습니다.
문제 해결 단계 :
PHP 파일을 열고 Header () 함수 전에 출력이 없음을 확인하십시오.
필요한 경우 OB_START ()를 사용하여 초기 출력을 피하기 위해 출력 버퍼링을 활성화하십시오.
<?php
ob_start(); // 출력 버퍼링을 켭니다
header("Location: http://m66.net/anotherpage.php");
exit;
ob_end_flush(); // 출력 버퍼를 청소하고 컨텐츠를 출력하십시오
?>
헤더 () 함수는 스크립트 실행을 즉시 종료하지 않으며, 이후에 exit () 또는 die () 함수가 호출 될 때만 스크립트가 실행을 중지합니다. 따라서 Header ()을 호출 한 후 Exit ()을 호출하지 않으면 PHP는 후속 코드를 계속 실행하여 빈 또는 페이지의 오류가 발생할 수 있습니다.
해결책:
Header () 함수 직후에 Exit ()을 호출하여 스크립트가 실행을 종료하고 다른 컨텐츠가 출력되지 않도록하십시오.
header("Location: http://m66.net/anotherpage.php");
exit; // 스크립트가 실행을 종료하는지 확인하십시오
헤더 정보가 headers_sent () 함수를 통해 전송되었는지 확인할 수 있습니다. 헤더 () 함수가 호출 될 때 브라우저가 헤더 정보를 수신 한 경우 PHP는 헤더 정보를 다시 보낼 수 없으므로 리디렉션 실패가 발생합니다.
해결책:
Header () 함수를 호출하기 전에 Headers_Sent () 함수를 사용하여 헤더 정보가 전송되었는지 확인하십시오.
헤더가 전송 된 경우 OB_START ()를 사용하여 출력을 버퍼링 할 수 있습니다.
if (!headers_sent()) {
header("Location: http://m66.net/anotherpage.php");
exit;
} else {
echo "리디렉션 할 수 없습니다,헤더 정보가 전송되었습니다";
}
페이지 공백은 PHP 오류로 인해 발생할 수 있습니다. 기본적으로 PHP는 오류 메시지가 표시되지 않고 대신 빈 페이지를 직접 출력 할 수 있습니다. 오류 보고서를 켜면 잠재적 인 문제가 있는지 확인할 수 있습니다.
해결책:
개발 중에 PHP 오류보고를 통해 잠재적 오류를 감지하고 수정하십시오.
error_reporting(E_ALL); // 모든 오류 보고서를 켜십시오
ini_set('display_errors', 1); // 페이지에 오류가 표시됩니다
Header () 함수를 사용하여 리디렉션 할 때 올바른 HTTP 상태 코드가 사용되는지 확인하십시오. 기본 리디렉션 상태 코드는 302 (임시 리디렉션)입니다. 리디렉션이 영구적 인 경우 301 상태 코드를 사용해야합니다.
header("Location: http://m66.net/anotherpage.php", true, 301); // 영구 리디렉션
exit;
위의 문제 해결 단계를 통해 Header () 함수를 사용하여 리디렉션 할 때 Page Blank 문제를 발견하고 해결할 수 있습니다. 주요 검사 지점에는 다음이 포함됩니다.
Header () 호출 전에 출력이 없는지 확인하십시오.
스크립트가 실행을 종료하도록 exit ()을 호출하십시오.
헤더 메시지가 전송되었는지 확인하십시오.
오류 보고서를 켜면 다른 오류 메시지가 있는지 확인하십시오.
이러한 조치를 통해 페이지 공백 문제를 피하고 리디렉션이 제대로 작동하도록 할 수 있습니다.
관련 태그:
header