>백엔드 개발 >PHP 튜토리얼 >PHP_SELF, PATH_INFO, SCRIPT_NAME, REQUEST_URI의 차이점은 무엇이며 어떤 것을 사용해야 합니까?

PHP_SELF, PATH_INFO, SCRIPT_NAME, REQUEST_URI의 차이점은 무엇이며 어떤 것을 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 20:42:30492검색

What are the differences between PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI and which one should I use?

차이점 이해: PHP_SELF, PATH_INFO, SCRIPT_NAME, REQUEST_URI

서버 측 애플리케이션을 개발할 때 요청의 정확한 주소를 결정하는 것은 탐색 및 처리에 매우 중요합니다. 이 기사에서는 PHP 슈퍼 전역 변수인 PHP_SELF, PATH_INFO, SCRIPT_NAME 및 REQUEST_URI를 비교하여 차이점과 안정성을 명확하게 설명합니다.

PHP_SELF

PHP_SELF는 현재 실행 중인 스크립트를 나타냅니다. 해당 값에는 하위 디렉터리 또는 쿼리 문자열을 포함하여 스크립트의 전체 URI가 포함됩니다. 제공된 예에서 mod_rewrite를 사용하여 요청을 메인 컨트롤러로 라우팅하는 경우 PHP_SELF는 실제 요청된 URL에 관계없이 항상 "index.php"입니다.

PATH_INFO

PATH_INFO에는 스크립트 이름과 쿼리 문자열 뒤에 오는 URI 부분. 스크립트와 관련된 경로 정보를 나타냅니다. 동일한 예를 사용하여 요청된 URL이 "http://www.example.com/faq/whatever"인 경우 PATH_INFO는 "/faq/whatever"를 보유합니다.

SCRIPT_NAME

SCRIPT_NAME 현재 실행 중인 스크립트의 전체 경로와 파일 이름을 제공합니다. 대부분의 경우 PHP_SELF와 유사하지만 RewriteBase와 함께 mod_rewrite를 사용하거나 요청이 하위 요청인 경우에는 다릅니다. mod_rewrite 예에서 SCRIPT_NAME은 "index.php" 대신 "/test.php"입니다.

REQUEST_URI

REQUEST_URI에는 쿼리 문자열을 포함하여 클라이언트가 보낸 전체 URI가 포함됩니다. . 이는 요청된 URL을 가장 완벽하게 표현한 것입니다. 그러나 비어 있지 않은 쿼리 문자열, 서버 측 리디렉션 또는 HTTP 오류(예: 404)와 같은 특정 조건에서는 SCRIPT_NAME 및 PHP_SELF와 다를 수 있습니다.

비교 및 신뢰성

다음 예는 이러한 슈퍼 전역 변수 간의 차이점을 보여줍니다.

  • 요청된 URL이 "http://example.com/test.php/foo/bar" 형식인 경우:

    • PHP_SELF: /test.php/foo/bar
    • SCRIPT_NAME: /test.php
    • PATH_INFO: /foo/bar
  • 비어있지 않은 쿼리 문자열을 입력한 경우(http://example.com/test.php?foo=bar):

    • PHP_SELF: /test.php
    • SCRIPT_NAME: /test.php
    • PATH_INFO: (비어 있음)
    • REQUEST_URI: /test.php?foo=bar
  • 서버측 리디렉션이 적용되는 경우:

    • PHP_SELF: /test.php(원래 요청)
    • SCRIPT_NAME: /test2.php(리디렉션된 요청)
    • REQUEST_URI: /test.php(원래 요청)

이러한 예를 기반으로 REQUEST_URI는 요청된 URL에 대한 가장 포괄적인 표현을 제공합니다. 그러나 서버측 리디렉션이나 HTTP 오류의 영향을 받을 수 있습니다. PHP_SELF 및 SCRIPT_NAME은 일반적으로 스크립트 주소를 결정하는 데 신뢰할 수 있지만 PATH_INFO는 mod_rewrite를 사용할 때 특정 경로 정보를 추출하는 데 유용할 수 있습니다.

위 내용은 PHP_SELF, PATH_INFO, SCRIPT_NAME, REQUEST_URI의 차이점은 무엇이며 어떤 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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