익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
PHP SERVER 변수
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
고급
특수 문자
도움말
문단 제목
2단계
3단계
4단계
5단계
형식
넣기
라틴 문자
확장 라틴 문자
IPA 문자
기호
그리스 문자
그리스어 확장
키릴 문자
아랍 문자
아랍어 확장
히브리 문자
뱅골어
타밀어
텔루구어 문자
싱할라 문자
데바나가리어
구자라트 문자
태국어
라오어
크메르어
캐나다 원주민 언어
룬 문자
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
서식 지정
링크
문단 제목
목록
파일
각주
토론
설명
입력하는 내용
문서에 나오는 결과
기울임꼴
''기울인 글씨''
기울인 글씨
굵게
'''굵은 글씨'''
굵은 글씨
굵고 기울인 글씨
'''''굵고 기울인 글씨'''''
굵고 기울인 글씨
이 문서는 서버 프로그래밍 언어 PHP의 $_SERVER 변수(배열)에 대하여 다룹니다. == 목록 == * '''$_SERVER['DOCUMENT_ROOT']''' ** 현재 사이트가 위치한 서버상의 위치 ** 예시: /webapp/include * '''$_SERVER['HTTP_ACCEPT_ENCODING']''' ** 인코딩 방식 ** 예시: gzip, deflate * '''$_SERVER['HTTP_ACCEPT_LANGUAGE']''' ** 언어 ** 예시: ko * '''$_SERVER['HTTP_USER_AGENT']''' ** 사이트에 접속한 사용자 환경 ** Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705 * '''$_SERVER['REMOTE_ADDR']''' ** 사이트 접속한 사용자 IP ** 예시: 123.234.132.133 * '''$_SERVER['SCRIPT_FILENAME']''' ** 실행되고 있는 위치와 파일명 ** 예시: webapp/include/index.php * '''$_SERVER['SERVER_NAME']''' ** 사이트 도메인 ** 예시: itwiki.kr * '''$_SERVER['SERVER_PORT']''' ** 사이트가 사용하는 포트 ** 예시: 80 * '''$_SERVER['SERVER_SOFTWARE']''' ** 서버의 소프트웨어 환경 ** 예시: Apache/1.3.23 (Unix) PHP/4.1.2 mod_fastcgi/2.2.10 mod_throttle/3.1.2 mod_ssl/2.8.6 OpenSSL/0.9.6c * '''$_SERVER['GATEWAY_INTERFACE']''' ** CGI 정보 ** 예시: CGI/1.1 * '''$_SERVER['SERVER_PROTOCOL']''' ** 사용된 서버 프로토콜 ** 예시: HTTP/1.1 * '''$_SERVER['REQUEST_URI']''' ** 현재페이지의 주소에서 도메인 제외 ** 예시: /index.php?a=test&b=test2 * '''$_SERVER['PHP_SELF']''' ** 현재페이지의 주소에서 도메인과 넘겨지는 값 제외 ** 예시: / index.php * '''$_SERVER['APPL_PHYSICAL_PATH']''' ** 현재페이지의 실제 파일 주소 ** 예시: D:\webapp/ == 해설 == === 'HTTP_HOST'와 'SERVER_NAME'의 차이 === 두 변수 모두 디렉터리나 파라미터를 제외한 홈페이지 도메인을 보여준다. 본 위키의 경우 itwiki.kr 이다. 그러나 불러오는 출처에서 차이가 있는데 HTTP_HOST는 사용자의 요청에 기반한 정보([[HTTP 요청 헤더]]에서 얻는다)이고 SERVER_NAME은 서버의 설정에 기반한 정보이다. 거의 대부분의 경우는 같은 값을 반환하므로 그냥 아무거나 선택해서 사용해도 무방하다. 하지만 미세한 차이점과 장단점이 있는데 차이점 중 대표적인 것이 포트 포함 여부, 이스케이프 여부 등이다. '''장단점''' '''HTTP_HOST는''' HTTP요청을 조작하여 얼마든지 원하는 값을 넣을 수 있다. abc.com을 호출 하면서 Host: xyz.com 라는 헤더 값을 넣으면 HTTP_HOST는 xyz.com이라는 값이 나온다. 정상적인 요청이 아닌 경우 그냥 빈 값을 반환할 수도 있다. '''SERVER_NAME은''' 서버의 설정이 제대로 되어 있지 않을 경우 값이 나오지 않거나 잘못 나올 수 있다. 서버에서 가져올 값이 없는 경우 HTTP_HOST의 값을 참조하여 가져온다. 따라서 서버 설정도 되어있지 않고 HTTP_HOST의 값도 없는 경우 HTTP_HOST도 빈 값, SERVER_NAME도 빈 값이지만, HTTP_HOST의 값이 있는 경우라면 SERVER_NAME도 빈 값은 아니다. '''포트 포함 여부''' 8080과 같이 별도 포트를 사용하는 경우, HTTP_HOST는 포트를 포함하지만 SERVER_NAME은 포트를 포함하지 않는다. 단, 일반적으로 접근하는 80(http)이나 443(https)의 경우 해당사항이 없다.<blockquote> * $_SERVER['HTTP_HOST'] == 'localhost:8080' * $_SERVER['SERVER_NAME'] == 'localhost'</blockquote>'''HTML 이스케이프 여부''' 이 또한 일반적인 경우는 아니고 비정상 적인 요청일 때만 차이가 난다. 만약 [[크로스사이트 스크립트]] 등을 위해 HTTP 요청 헤더의 Host 값에 <script>와 같은 태그를 넣는다면 HTTP_HOST는 적힌 그대로 보여주고, SERVER_NAME은 HTML로 이스케이프된 값을 보여준다.<blockquote> * $_SERVER['HTTP_HOST'] == [<nowiki><script>alert('XSS')</script></nowiki>] * $_SERVER['SERVER_NAME'] == <nowiki>[&lt;script&gt;alert('XSS')&lt;/script&gt;]</nowiki></blockquote>
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록