웹마스터 팁

<?
/*
     국내 Whois에서 해당 IP를 조회하고, 정보를 리턴해주는 클래스

        Scripted by 행복한고니(gonom9@empal.com)
*/

class whoisClass
{
        var $ip, $errno, $errstr;
        var $pattern = "^[[]+( IP 사용 기관 정보 )";
        var $result;

        //IP를 입력하고 결과값(한글) 배열을 반환한다.
        function query_ip($ip){
                $this->ip = $ip;
                $str = $this->getStr();
                if(!$str) return false;
                $str_num = count($str);

                for($i=0 ; $i<$str_num; $i++){
                        if(eregi("조회하신 IP주소의 사용기관 정보는 아래와 같습니다.", $str[$i]) == 1) $Start_Capture = 13;
                        if($Start_Capture != 0){
                                switch($Start_Capture){
                                        case 11:
                                                $result = explode("-",ereg_replace("IP 주소            : ","",$str[$i]));
                                                $this->result["start_ip"] = $result[0];
                                                $this->result["end_ip"] = $result[1];
                                                break;
                                        case 9:
                                                $this->result["isp"] = ereg_replace("연결 ISP명         : ","",$str[$i]);
                                                break;
                                        case 4:
                                                $this->result["org_id"] = ereg_replace("기관고유번호       : ","",$str[$i]);
                                                break;
                                        case 3:
                                                $this->result["org_name"] = ereg_replace("기관명             : ","",$str[$i]);
                                                break;
                                        case 2:
                                                $this->result["city"] = ereg_replace("시도명             : ","",$str[$i]);
                                                break;
                                        case 1:
                                                $this->result["address"] = ereg_replace("주소               : ","",$str[$i]);
                                }
                                $Start_Capture--;
                        }
                }
                return $this->result;
        }

        //Private
        function getStr(){
                $fp = fsockopen("whois.nic.or.kr", 43, $this->errno, $this->errstr,10) or exit();
                fputs($fp, $this->ip."rn");

                $string = "";
                while(!feof($fp)){
                        $string .= fgets($fp, 128);
                }
                fclose($fp);
                if($string) return $string;
                else return false;
        }
}
?>

사용법은 아래쪽에 제가 올린 것과 같습니다. -_-;;
뽑아오는 정보에도 변함이 없지만, 소켓을 사용했다는 점이 틀립니다.
즉, whois의 웹페이지를 통하지 않고 바로 43번 소켓으로 접속해서 정보를 뽑아옵니다.
혹시 이게 의심나시는 분은 텔넷으로 whois.nic.or.kr의 43번 포트에 접속해서 아이피를 적고 엔터쳐보시길....
바로 정보가 튀어나옵니다. ^^;;
소켓의 접속시간은 10초로 제한했습니다. 10초안에 whois에서 정보를 빼오지 못하면 false 값을 리턴하도록 했습니다. -_-;; 때때로 페이지가 멈춰버리는 현상이 생겨서요....

*** 주의점
소켓 라이브러리를 사용했기때문에 PHP에서 소켓사용이 가능해야 합니다.
phpinfo()를 출력해보고 옵션에 --enable-sockets 가 있는지 확인하세요~ ^^
아래것보다 빠른 속도와 조금 더 높은 성공률이 장점입니당~
(참고 : WinAPM에서는 소켓을 사용할 수 없는 것 같더군요)

아래에 제가 썼던 글입니다.
http://www.nzeo.com/bbs/zboard.php?id=p_study&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=609
제목 글쓴이 날짜
이미지를 HTML table tag로 변환. [7] file 민이 2002.12.31
국내 IP정보를 조회하는 클래스 [7] 행복한고니 2003.01.04
[동주아빠] PHP 게시판(23강) - 내용 보기 기능(1) view.php 디자인 손병목 2003.01.04
[동주아빠] PHP 게시판(24강) - 내용 보기 기능(2) view.php 소스 file 손병목 2003.01.04
[동주아빠] PHP 게시판(25강) - 내용 보기 기능(3) 설명 [1] 손병목 2003.01.04
access 자료(mdb) 를 MySQL로 변환하는 방법 [8] 황선규 2003.01.06
[1분짜리 팁] 절대경로 알아내기! [14] 찐군 2003.01.09
웹서핑중 구했습니다. 조그만 달력.. [6] file 황선규 2003.01.10
[동주아빠] PHP 게시판(26강) - 수정(modify.php) 손병목 2003.01.11
[동주아빠] PHP 게시판(27강) - 수정(modify_ok.php) 손병목 2003.01.11
[동주아빠] PHP 게시판(28강) - 삭제(delete.php) 손병목 2003.01.11
[동주아빠] PHP 게시판(끝.29강) - 삭제(delete_ok.php) [18] 손병목 2003.01.11
웹 인증 보호, 윈도우 로그인 폼 이용 (authenticate) [9] file 둘리나라™ 2003.01.13
파일 하나로 끝내는-_- NZEO 북마크...-_-a [14] ineal 2003.01.13
텍스트 링크, 배너 링크*랜덤 (틀팁포함) [3] 둘리나라™ 2003.01.16
국내 IP 조회하는 클래스.(소켓사용) [1] 행복한고니 2003.01.17
엔지오 처럼 주소 /?channel=about 식으로 만들기 [18] 위니 2003.01.21
[제로카운터 수정하기#1-초보용] 테이블 다 지우고 새로 설치하기 [2] 김태훈 2003.01.22
[제로카운터 수정하기#2-초보용] 새로 설치후 예전 방문자수로 고치기(최고방문자수 문제해결됨) 김태훈 2003.01.22
[제로카운터 수정하기#3-초보용] 어제 오늘 방문자수 변경하기 김태훈 2003.01.22