PHP PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI 차이점
페이지 정보
본문
<form method="post" action="<?php echo $PHP_SELF?>">
PHP 에서 많이 사용하는 서버 변수들 중에서 아래 세가지 변수는 비슷한 값을 가진다.
$_SERVER['PHP_SELF']
$_SERVER['SCRIPT_NAME']
$_SERVER['REQUEST_URI']
하지만, 비슷하긴 해도 조금 복잡하게 들어가면 서로 다르다.
Example 1. 요청된 URL 이 다음과 같을때:
http://example.com/test.php/foo/bar
$_SERVER['PHP_SELF'] => /test.php/foo/bar
$_SERVER['SCRIPT_NAME'] => /test.php
(this seems to be the only case when PATH_INFO contains sensible information [PATH_INFO] => /foo/bar) Note: this used to be different in some older PHP versions (<= 5.0 ?).
Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME 은 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
$_SERVER['SCRIPT_NAME'] => /test.php
$_SERVER['REQUEST_URI'] => /test.php?foo=bar
Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
http://example.com/test.php
$_SERVER['REQUEST_URI'] => /test.php
$_SERVER['SCRIPT_NAME'] => /test2.php
Example 4. REQUEST_URI is different from SCRIPT_NAME when handling HTTP errors with scripts.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
$_SERVER['REQUEST_URI'] => /test.php
$_SERVER['SCRIPT_NAME'] => /404error.php
On IIS server using custom error pages
http://example.com/test.php
$_SERVER['SCRIPT_NAME'] => /404error.php
$_SERVER['REQUEST_URI'] => /404error.php?404;http://example.com/test.php
참고자료
http://pjongy.tistory.com/150
http://moyaria.tistory.com/entry/PHP-에서-서버변수인-PHPSELF-SCRIPTNAME-REQUESTURI-차이점
https://stackoverflow.com/questions/279966/php-self-vs-path-info-vs-script-name-vs-request-uri
PHP 에서 많이 사용하는 서버 변수들 중에서 아래 세가지 변수는 비슷한 값을 가진다.
$_SERVER['PHP_SELF']
$_SERVER['SCRIPT_NAME']
$_SERVER['REQUEST_URI']
하지만, 비슷하긴 해도 조금 복잡하게 들어가면 서로 다르다.
Example 1. 요청된 URL 이 다음과 같을때:
http://example.com/test.php/foo/bar
$_SERVER['PHP_SELF'] => /test.php/foo/bar
$_SERVER['SCRIPT_NAME'] => /test.php
(this seems to be the only case when PATH_INFO contains sensible information [PATH_INFO] => /foo/bar) Note: this used to be different in some older PHP versions (<= 5.0 ?).
Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME 은 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
$_SERVER['SCRIPT_NAME'] => /test.php
$_SERVER['REQUEST_URI'] => /test.php?foo=bar
Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
http://example.com/test.php
$_SERVER['REQUEST_URI'] => /test.php
$_SERVER['SCRIPT_NAME'] => /test2.php
Example 4. REQUEST_URI is different from SCRIPT_NAME when handling HTTP errors with scripts.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
$_SERVER['REQUEST_URI'] => /test.php
$_SERVER['SCRIPT_NAME'] => /404error.php
On IIS server using custom error pages
http://example.com/test.php
$_SERVER['SCRIPT_NAME'] => /404error.php
$_SERVER['REQUEST_URI'] => /404error.php?404;http://example.com/test.php
참고자료
http://pjongy.tistory.com/150
http://moyaria.tistory.com/entry/PHP-에서-서버변수인-PHPSELF-SCRIPTNAME-REQUESTURI-차이점
https://stackoverflow.com/questions/279966/php-self-vs-path-info-vs-script-name-vs-request-uri
댓글목록
등록된 댓글이 없습니다.