10.환경 변수 LIST


  앞장에서는 여러 환경변수 중 하나를 사용해서 정보를 활용했었다. 이렇게 활용할 수 있는 정보는 몇가지가 있는가? 다음 CGI를 실행시켜보면 금방 알수있다.

#include <stdio.h>

main(argc, argv, env)
int argc;
char**argv;
char**env;
{
    int i;

    printf("Content-type: text/html\n\n");

    i = 0;
    while(env[i] != NULL){
       printf(" %d : %s<br>\n", i, env[i++]);
    }
}


  위 프로그램은 모든 환경변수를 출력하는 프로그램이다. 명령행 인자로 두 개만 있는 것을 많이 봤겠지만, 3개를 쓰게 되면, 환경변수가 3번째 인자로 들어온다. 즉, 위의 예에서는 char** env에 환경변수의 목록이 담기게 되는 것이다.

  일반적으로 CGI프로그램이 실행될 때, 다음과 같은 환경변수값들을 얻을 수 있다.

HTTP_USER_AGENT브라우저이름 버전등을 나타낸다.
HTTP_ACCEPT브라우저가 처리할 수 있는 MIME Type
REMOTE_HOST사용자의 HOST 명칭(비어있을수있다.)
REMOTE_ADDR사용자의 IP Address
SERVER_SOFTWARE웹서버 SORTWARE NAME/VERSION
SERVER_NAME웹서버명(자신의 IP ADDRESS)
GATEWAY_INTERFACECGI 사양(CGI/VERSION)
SCRIPT_NAMECGI프로그램 이름
SERVER_PROTOCOLPROTOCOL명(HTTP/버젼)
SERVER_PORT서버 포트번호
CONTENT_TYPE브라우저로부터 올라온 MIME TYPE
CONTENT_LENGTH브라우저로부터 올라온 총 바이트수
AUTH_TYPE사용자 인증에 사용됨
REQUEST_METHOD데이터 전달방식(GET또는 POST방식)


  사용되는 웹서버나 브라우저에 따라서 환경변수가 추가되거나 부족한 경우가 있다. 따라서, 실제 운영되는 환경하에서 위의 프로그램을 실행시켜서 어떤 정보를 제공하는지 확인해 볼 필요가 있다.

    REMOTE_ADDR   위의 환경변수중 REMOTE_ADDR을 이용하게 되면 사용자가 어디서 왔는지(IP Address) 금방알 수 있다. 그러나, PROXY SERVER를 경유하는 경우 모든 REMOTE ADDR이 하나로 표현된다는 점을 주의하기 바란다.( 즉, 웹에서 가명으로 해킹할 때 자신의 IP ADDRESS를 숨기고 싶다면 일차적으로는 PROXY SERVER를 지정해주면된다. 그러나, 이역시도 PROXY SERVER에는 기록이 남는다.)

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master