2019년 1월 6일

PHP 에서 $_SERVER(서버변수) PHP_SELF SCRIPT_NAME REQUEST_URI 차이?

홈페이지 루트에 test.php 를 접근했을 경우 아래와 같이 똑같은 변수가 있다.
    $_SERVER['REQUEST_URI'] => /test.php
    $_SERVER['SCRIPT_NAME'] => /test.php
    $_SERVER['PHP_SELF'] => /test.php
 SCRIPT_NAME  과 PHP_SELF 는 기본적으로 같다고 보면 좋을 것 같다.

Example 1. 요청된 URL 이 파일이름을 포함할때다음과 같을때:
http://example.com/test.php/foo/bar
[REQUEST_URI] => /test.php/foo/bar
[PHP_SELF] => /test.php/foo/bar
[SCRIPT_NAME] => /test.php


Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME, PHP_SELF는 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
[REQUEST_URI] => /test.php?foo=bar
[PHP_SELF] => /test.php
[SCRIPT_NAME] => /test.php


Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
웹브라우저 : http://example.com/test.php
실제서버경로 : /htdocs/test2.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /test2.php
[SCRIPT_NAME] => /test2.php


Example 4. 브라우저에서 없는URL을 요청할 경우 404 Error 페이지를 보여줄때 REQUEST_URI 는 클라이언트의 요청주소를 알수있다.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /404error.php
[SCRIPT_NAME] => /404error.php


** 관련 레퍼런스 : https://stackoverflow.com/a/326331

댓글 없음:

댓글 쓰기

추천 게시물

바이낸스 지갑 설치하기(크롬 확장자)

바이낸스 지갑은 BNB 네트워크를 사용하는 코인을 보관하는 개인 지갑입니다.  코인거래 설치하는 일입니다! 개인지갑은 브라우저의 확장프로그램을 써야합니다. 바이낸스 지갑을 설치할꺼에요.  만약에 폰이라면 Trust wallet 를 앱스토에서 깔아도 됩...