웹마스터 팁

<?
/*
     국내 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
제목 글쓴이 날짜
홈페이지에 실시간뉴스 보여주기 [19] looster 2001.06.05
자기 홈 또는 서버 연지 며칠이 지났는지 알 수 있는 php 소스 [15] 고종길 2001.06.03
대화방을 만들어보쟈~ [20] 해그리드짱!!! 2001.06.03
쿠키 설정하고 불러올때 주의할점;; [윈도우 멀티부팅 사용하시는 초보분만] [9] daftya 2001.05.29
GD를 이용해본 영어 발음기호 image출력 [3] 앤디(andy) 2001.05.24
[APM] 한글, gif, jpeg, png 다되는 GD 설치 [4] 앤디(andy) 2001.05.22
최근게시물 - 첫글은 내용까지, 다음글부터 목록만... [15] СreдturЭ 2001.04.16
공부용 방명록이에욥^^. 주석왕창(페이지분할등.기능있어욥~) [2] 프리^^ 2001.04.16
[추천 팁] phpmyadmin 으로 복구 할때. 후니 2001.02.28
주소에서 음악 파일만 빼와 윈앰프로 실행하기 [1] file 오기 2001.12.04
배경 음악을 한번만 실행 시키기 - 쿠키이용 [4] 오기 2001.12.02
M3U생성 프로그램을 통한 MP3실시간 듣기.. [11] ▒1q▒ 2001.09.13
PHP 인증 페이지를 만들자! - Lesson 3 수정본 #1 [3] ☺[폐]허접-_- 2002.01.24
회원관리 프로그램을 구현하고 싶은신 분들께.. [7] [폐]허접-_- 2002.03.18
PHP 인증 페이지를 만들자! - Lesson 2 수정본 #1 [5] ☺[폐]허접-_- 2002.01.24
PHP 인증 페이지를 만들자! - Lesson 1 수정본 #2 ☺[폐]허접-_- 2002.01.24
노프레임/카운터에 관련된 PHP함수 팁 몇가지 [1] 차카게살자 2001.12.28
MySQL 루트비번 분실시 대처요령 [29] zero 2001.04.18
교육용 방명록 #8 [delete.php3파일에서 넘겨받은 비밀번호를 검사하여 글을 삭제합니다.] [18] zero 2000.07.03
교육용 방명록 #7 [삭제 버튼을 눌렀을 때 비밀번호를 입력받는 부분입니다.] [5] zero 2000.07.03