Q&A

  • 내가 만든 특정 웹페이지를 열어본 모든 사람의 아이피를 저장해서 확인할수있는 방법...?
내가 만든 특정 웹페이지를 열어본 모든 사람의 아이피를 저장해서 확인할수있는 방법이 있을까요?
델파이로 가능할지 고민입니다.
만약 가능하다면 조그만 단서라도 알려주셨으면 좋겠어요.

가정1. 유료 호스팅 회사의 서버를 이용하는 경우
가정2. 자신의 서버를 이용하는 경우

부탁드립니다.
4  COMMENTS
  • Profile
    Marek 2007.10.09 00:52
    안녕하세요

    일반적인 웹페이지라면 로그화일을 분석하시면 될듯합니다.
    C:\WINNT\system32\LogFiles\W3SVC1 디렉터리에 보시면 로그화일이
    날짜별로 생성되어 있습니다.  그 안에는 ex071008.log와 같은 형태의
    화일이 있는데 이건 순수한 텍스트화일이므로 델파이에서 불러와서
    각종 통계를 만들어 낼수 있습니다.   화일의 내용은

    #Software: Microsoft Internet Information Services 5.0
    #Version: 1.0
    #Date: 2007-10-08 06:22:58
    #Fields: date time c-ip cs-username s-ip s-port cs-method - 생략
    2007-10-08 06:22:58 192.1.50.22 - 192.1.1.66 80 GET /            - 생략
    2007-10-08 06:25:28 192.1.50.22 - 192.1.1.66 80 GET /default.asp - 생략
    2007-10-08 06:25:28 192.1.50.22 - 192.1.1.66 80 GET /favicon.ico - 생략
    2007-10-08 06:27:36 192.1.50.22 - 192.1.1.66 80 GET /default.asp - 생략

    위 의미는 각줄 서두에 기록된 일시에 접속자IP(192.1.50.22)가 웹페이지IP인 192.1.1.66에
    접속하였다는 의미입니다.  라인별로 읽어서 자릿수를 읽으면 될것입니다.
    호스팅이라면 이 로그화일을 받아야 할것 같구요...
    혹시 이 방법외에 다른 의미로 질의하신 것인지 잘 모르겠습니다.

    즐프하세요


  • Profile
    권민선 2007.10.09 10:39
    답변 정말 감사드립니다.

    그런데 유료 호스팅 서비스에 계정을 가지고 있는 경우, 로그파일을 받을 수가 있나요?
    자신의 계정이 있으면 DB가 존재할텐데 DB에 접속을 해서 로그정보를 가져올 순 없나요?
    php로는 환경변수 $REMOTE_ADDR 를 이용해서 간단히 방문자 아이피를 저장할 수 있다고 하던데...
    php를 써야한다면 델파이와 어떻게 연동하면 될까요?

    제 생각엔
    1. 방문자가 특정 웹페이지에 접속한다.
    2. $REMOTE_ADDR 에 접속자의 아이피가 저장된다.
    3. $REMOTE_ADDR 의 값이 변할 때마다 FTP상에 임의의 파일을 만들어 그 안에 변수값을 집어넣는다.
    4. 델파이로 FTP상에 있는 아이피가 저장된 파일을 다운로드 받아서 그 값들을 읽어들인다.
    5. 유저가 보기좋게 뿌려준다.
    ...

    정도가 될 것 같은데... 제가 생각하고 있는 것이 맞나요??
    그렇다면 2번과 3번과정. 그리고 FTP상에 있는 파일을 다운로드 받는 방법 등등을 잘 모르겠네요.

    또는 만약 가능하다면...
    1. 델파이 프로그램을 실행시킨다.
    2. 델파이에서 자신의 계정 관리자 아이디와 비밀번호로 유료호스팅 서버에 있는 자신의 계정 DB에 접근을 한다.
    3. DB에서 로그(파일)를 읽어온다.
    4. 델파이에서 보기좋게 뿌려준다.

    이렇게 하면 100% 델파이로 구현되는거니까 더 흐뭇할텐데...
    이런 방법이 가능할까요?? 만약 가능하다면 어떻게 해야될지 자세한 지도편달을 부탁드립니다.

    아무쪼록 골때리는 초보의 질문이지만 넓은 아량으로 봐주시길 바랍니다.
  • Profile
    Marek 2007.10.10 02:35
    안녕하세요.
    로그화일은 Windows의 System32폴더에 있기 때문에 호스팅 업체가 공유해 줄 수는 없습니다.
    로그화일은 텍스트이기 때문에 화일사이즈가 작아 호스팅 업체로부터 메일로 전달 받을수 있습니다.
    델파이와 Realtime연동이 필요하시다면 Database로 연동하십시요.

    php와 델파이가 밀착되서 연동되지는 않습니다만 만일 $REMOTE_ADDR에 의해 접속자의 IP를
    알 수 있다면 그 IP를 홈페이지의 DB에 저장하시면 Delphi로 DB연동하여 님께서 계신 곳에서
    화면에 보여질수 있습니다.  이 경우 호스팅 업체에 DB계정 및 방화벽을 Open해 달라고 요청해야
    겠지요.  FTP로 받아오는 것은 호스팅 업체가 그때그때 FTP폴더로 로그화일을 복사해 주어야 하기 때문에
    권장하고 싶지 않습니다.

    주섬주섬 답변하였습니다.  

    Marek Wrote


  • Profile
    권민선 2007.10.11 02:47
    매번 질문에 답변해주셔서 정말 감사드립니다.

    결국 첫번째 방법으로 코딩을 해봤습니다.
    우선 방문자를 알고자하는 웹페이지에

    <!--CodeS-->
    <?
    $ip = getenv("REMOTE_ADDR");
    $cur_date = date("Y-m-d H:i:s         ");
    $fileName = "./visitor.log";

    $fd = fopen($fileName,"a");
    fwrite($fd,$cur_date);
    fwrite($fd,$ip."\n");

    fclose($fd);
    ?>
    <!--CodeE-->

    를 넣어서 웹페이지가 존재하는 같은 폴더에 visitor.log 파일을 만들고,
    델파이로 받아와서 연도별, 월별, 일별로 검색하여 뿌려주는 식으로 해봤습니다.

    열심히 공부하겠습니다.