>백엔드 개발 >PHP 튜토리얼 >PHP header() 함수 사용 (301, 404 및 기타 오류 설정)

PHP header() 함수 사용 (301, 404 및 기타 오류 설정)

WBOY
WBOY원래의
2016-07-25 08:57:381272검색
  1. Header("HTTP/1.1 404 Not Found");
코드 복사

Apache 구성의 경우 nginx 구성의 ErrorDocument 404 /404.php 함수

  1. error_page 404 /404.php;
코드를 복사

하여 변경하세요.

  1. error_page 404 = /404.php;
코드 복사

php heager 301

  1. header("HTTP/1.1 301 영구적으로 이동됨")
  2. header("위치:$url");
  3. ?>
코드 복사

페이지 헤더 수에 관계없이 마지막 헤더를 실행하지만 조건부입니다. 예:

  1. header('위치:http://bbs.it-home.org')
  2. header('위치:http://www .g.cn');
  3. header('위치:http://www.baidu.com');
코드 복사

이것은 점프합니다. 바이두에

  1. header('위치:http://bbs.it-home.org');echo '프로그래머 홈;
  2. header(' 위치: http://www.g.cn');
  3. header('위치:http://www.baidu.com');
코드 복사

Google로 이동합니다. 헤더 기능 사용에 대한 자세한 지침 1. 기능: PHP는 HTTP 프로토콜을 사용하여 HTML 문서의 헤더만 브라우저에 보내고 브라우저에 페이지 처리 방법을 알려줍니다. 전송되는 내용은 HTTP 프로토콜에 익숙해야 하며 PHP와는 아무런 관련이 없습니다. 기존 헤더는 다음 세 가지 헤더 중 하나를 포함해야 하며 한 번만 나타날 수 있습니다.

  1. <1> 가장 많이 사용되는 리디렉션 기능입니다.
  2. Header("위치: http://bbs .it-home.org/");
  3. ?>
코드 복사

사용자가 방문할 때마다 최신 정보를 얻도록 강제 클라이언트 측에 존재하는 캐시를 사용하는 대신 이 페이지를 사용합니다.

  1. //브라우저에게 이 페이지의 만료 시간(그리니치 표준시로 표시)을 알려줍니다. 지나간 날짜입니다.
  2. header("Expires: Mon, 26 Jul 1970 05:00:00 GMT")
  3. //브라우저에게 이 페이지의 마지막 업데이트 날짜(그리니치 표준시로 표시), 즉 현재 날짜를 알려줍니다. . 목적은 브라우저가 최신 정보를 얻도록 하는 것입니다.
  4. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT")//Tell the 캐시를 사용하지 않는 클라이언트 브라우저
  5. header("Cache-Control: no-cache, must-revalidate")
  6. //Parameters(이전 서버와 호환 가능), 즉 HTTP1.0 프로토콜과 호환 가능
  7. header("Pragma: no- 캐시");
  8. //출력 MIME 유형
  9. header("콘텐츠 유형: 애플리케이션/파일")
  10. //파일 길이
  11. header("콘텐츠 -길이: 227685");
  12. //허용 범위 단위
  13. header("Accept-Ranges: bytes");
  14. //파일 저장 대화 상자의 기본 파일 이름
  15. header(" Content-Disposition: attachment; filename=$filename");
  16. ?>
코드 복사

브라우저에 상태 값을 출력합니다. 주로 접근 통제에 사용됨

  1. header('HTTP/1.1 401 권한 없음')
  2. header('상태: 401 권한 없음'); 🎜>?>
코드 복사
예를 들어 사용자가 이 페이지에 액세스하지 못하도록 제한하려면 다음과 같이 상태를 404로 설정할 수 있습니다. 아래와 같이 브라우저에 해당 페이지가 존재하지 않는 것으로 표시되도록 합니다.

    header('HTTP/1.1 404 찾을 수 없음')
  1. header("상태: 404 찾을 수 없음") ;
  2. ?>
코드 복사
참고: 기존 헤더에는 다음 세 가지 헤더 중 하나가 포함되어야 하며 한 번만 나타날 수 있습니다. 콘텐츠 유형: xxxx/yyyy 위치: xxxx:yyyy/zzzz 상태: nnn xxxxxx는 새로운 멀티파트 헤더 사양(멀티파트 MIME)에서 두 번 이상 나타날 수 있습니다.

사용 예 예제 1: 이 예제는 브라우저를 PHP 공식 웹사이트로 리디렉션합니다.

    Header("위치: http://bbs.it-home.org/");exit;
복사 코드

예 2: 프록시나 캐시의 데이터 대신 사용자가 매번 최신 데이터를 얻도록 하려면 다음 헤더를 사용할 수 있습니다.

  1. header("만료: 1997년 7월 26일 월요일 05:00:00 GMT")
  2. header("마지막 수정: " . gmdate ("D, d M Y H:i:s") . "GMT"); header("Cache-Control: no-cache, must-revalidate")
  3. header("Pragma: no-cache"); 🎜>
코드 복사
예 3: 사용자의 브라우저에 파일을 찾을 수 없다는 메시지가 표시되도록 합니다.

  1. header("Status: 404 Not Found");
코드 복사
예 4: 사용자가 파일을 다운로드할 수 있도록 합니다.

  1. header("콘텐츠 유형: 애플리케이션/x-gzip")
  2. header("콘텐츠 처리: 첨부 파일; 파일 이름=파일 이름" ) ;
  3. header("Content-Description: PHP3 생성 데이터");
코드 복사
header - 원시 HTTP 헤더 설명 보내기 무효 헤더( 문자열 문자열 [, bool 대체 [, int http_response_code]] )

header() 함수는 원시 HTTP 헤더를 보내는 데 사용됩니다. HTTP 헤더에 대한 자세한 내용은 HTTP/1.1 사양을 참조하세요. 선택적 매개변수인 replacement는 이전의 유사한 헤더를 바꿀지, 아니면 동일한 유형의 헤더를 추가할지 지정합니다. 기본값은 교체이지만 FALSE로 설정하면 동일한 유형의 여러 헤더가 전송될 수 있습니다. 예를 들어:

  1.  header('WWW-인증: 협상')
  2. header('WWW-인증: NTLM', false );
  3. ?>
코드 복사
두 번째 선택적 매개변수인 http_response_code는 HTTP 응답 코드를 지정된 값으로 강제합니다(이 매개변수는 PHP 4.3 .0입니다). 새로 추가되었습니다).

두 가지 특수 헤더 호출이 있습니다. 첫 번째는 "HTTP/" 문자열(대소문자 구분 없음)로 시작하는 헤더로, 전송할 HTTP 상태 코드를 결정하는 데 사용할 수 있습니다. 예를 들어, 찾을 수 없는 파일에 대한 오류 처리 요청을 처리하기 위해 PHP를 사용하도록 Apache를 구성하는 경우(ErrorDocument 지시어 사용) 스크립트가 올바른 상태 코드를 생성하는지 확인해야 합니다.

  1.  header("HTTP/1.0 404 Not Found")
  2. ?>
코드 복사
참고: 실제 header() 호출이 첫 번째인지 여부에 관계없이 HTTP 상태 코드 헤더 행은 항상 클라이언트에 가장 먼저 전송됩니다. HTTP 헤더가 이미 전송되지 않은 경우 header() 함수를 새 상태 줄로 호출하여 언제든지 덮어쓸 수 있습니다.

HTTP 상태 감지(HTTP 헤더):

두 번째 특별한 경우는 '위치:' 헤더입니다. 이 헤더를 브라우저로 다시 보내는 것뿐만 아니라 이전에 3xx 상태 코드가 발행되지 않은 한 REDIRECT(302) 상태 코드도 브라우저에 반환합니다.

  1.  header("위치: http://www.example.com/") /* 브라우저 리디렉션* /
  2.  /* 리디렉션 후 후속 코드가 실행되지 않도록 하세요*/
  3.  exit; HTTP/1.1 표준에서는 Location: 매개변수로 절대 주소 URI가 필요하지만 일부 클라이언트는 상대 URI를 지원합니다. 일반적으로 $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] 및 dirname() 함수를 사용하여 상대 URI에서 직접 절대 URI를 생성할 수 있습니다.
 header("위치: http://".$_server['http_host'/]

 .rtrim( dirname($_SERVER['PHP_SELF']), '/\')

 ."/".$relative_url)
?>
  1. 코드 복사
  2. 참고: session.use_trans_sid가 활성화된 경우에도 세션 ID는 위치 헤더 정보와 함께 전달되지 않습니다. SID 상수로 수동으로 전달해야 합니다. ​ PHP 스크립트는 브라우저나 프록시 서버에서 캐시하면 안 되는 동적 콘텐츠를 생성하는 경우가 많습니다. 많은 프록시 서버와 브라우저는 다음과 같은 방법으로 캐싱을 비활성화할 수 있습니다. 참고: 위의 모든 코드를 출력하지 않아도 웹페이지가 버퍼링되지 않는 것을 확인할 수 있습니다. 브라우저의 기본 캐싱 동작을 변경하기 위해 사용자가 설정할 수 있는 옵션이 많이 있습니다. 위 헤더를 보내면 스크립트 페이지가 캐시될 수 있는 모든 설정을 무시할 수 있습니다. ​ 또한 세션을 사용할 때 session_cache_limiter() 함수와 session.cache_limiter 옵션을 사용하면 올바른 캐시 관련 헤더를 자동으로 생성할 수 있습니다. ​ 일반 HTML 마크업, 빈 줄 또는 PHP 등 실제 출력 전에 header()를 호출해야 한다는 점을 기억하세요. 일반적인 실수는 include(), require() 또는 기타 파일 액세스 함수를 통해 코드를 읽을 때 header()를 호출하기 전에 일부 공백이나 빈 줄이 전송된다는 것입니다. 이 오류는 단일 PHP/HTML 파일에서도 흔히 발생합니다.

    1.  header("Cache-Control: no-cache, must-revalidate") // HTTP/1.1
    2. header("만료일: 1997년 7월 26일 월요일 05:00:00 GMT"); // 지난 시간
    3. ?>
    코드 복사

    1. /* header()를 호출하기 전에 뭔가가 출력되었기 때문에 오류가 발생합니다.
    2.  **/
    3. header('위치: http://www.example.com/');
    4. ?>
    코드 복사

    참고: PHP에서 시작하기 이후 4, 이 문제는 일부 출력 버퍼링 기능을 통해 해결될 수 있습니다. 비용은 브라우저로의 모든 출력이 이를 전송하라는 명령이 실행될 때까지 서버에 캐시된다는 것입니다. 이 기능을 구현하기 위해 코드에서 ob_start() 및 ob_end_flush()를 사용하거나, php.ini의 output_buffering 구성 옵션을 수정하거나, 서버 구성 파일을 수정하여 사용할 수 있습니다.

    첨부된 헤더()의 두 가지 일반적인 용도는 다음과 같습니다.

    1. //페이지 인코딩 설정:
    2. header('Content-Type:text/html;charset=gb2312')
    3. //Adjust 페이지:
    4. 헤더('위치:http://www.baidu.com');
    코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.