작업을 하다보면 방화벽 문제로 인하여 외부로 나가는 IP 정보를 몰라 그때 그때 코드를 작성하여 해당 정보를 얻는 경우가 종종 있습니다.  오늘은 IP 정보와 그외의 정보를 볼 수 있는 간단한 코드를 만들어 두고두고 사용하려고 합니다.

    1. 나의 인터넷 사용환경은?

    http://www.ihelpers.co.kr/programming/tipntech/myenv.php

    2. 코드

    <?
    require "../../lib/ihelpers_cfg.php";

    // Database 연결
    $conn = mysql_connect($C_HOSTNAME, $C_UID, $C_PWD) or die ("Connection Error :" . mysql_error() );
    mysql_select_db($C_DATABASE,$conn) or die ("Database Use Error : " . mysql_error() );

    $remote_addr = $HTTP_SERVER_VARS["REMOTE_ADDR"];

    if(!empty($remote_addr)){
     $sql = "
      SELECT * FROM IPTOCOUNTRY_T
      WHERE INET_ATON('$remote_addr') >= IPFROM AND INET_ATON('$remote_addr') <= IPTO
     ";
     $result = mysql_query($sql,$conn) or die ("SQL Error : ". mysql_error());
     $country = mysql_fetch_array($result);
     $flag = sprintf("$remote_addr ( <img src=\"/img/flag/%s.png\" alt=\"%s\"> %s )",
       strtolower($country["C2"]),$country["NAME"],$country["NAME"]);
    }
    ?>
    <html>
    <head>
    <title>인터넷 사용환경</title>
    <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
    <link rel=STYLESHEET type="text/css" href="/lib/style.css">
    </head>
    <body>
    <h4>인터넷 사용환경</h4>
    <li>IP 및 국가 - <?=$flag?>
    <li>브라우저 - <?=$HTTP_SERVER_VARS["HTTP_USER_AGENT"]?>
    <li>사용언어 - <?=$HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"]?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    document.write('<li>쿠키사용여부 - ' + navigator.cookieEnabled);
    document.write('<li>자바사용여부 - ' + navigator.javaEnabled());
    document.write('<li>해상도 - ' + screen.width + ' x ' + screen.height);
    document.write('<li>색상 - ' + screen.colorDepth);
    //-->
    </SCRIPT>
    </body>
    </html>

    IP 정보에 대한 국가 정보는 아래의 "국가 IP대역 자료" 를 참고하십시요.


    국가 IP 대역 자료

    1. 샘플

    "33996344","33996351","GB","GBR","UNITED KINGDOM"
    "50331648","69956103","US","USA","UNITED STATES"
    "69956104","69956111","BM","BMU","BERMUDA"
    "69956112","83886079","US","USA","UNITED STATES"
    "94585424","94585439","SE","SWE","SWEDEN"
    "100663296","121195295","US","USA","UNITED STATES"
    "121195296","121195327","IT","ITA","ITALY"
    ...

    2. 다운로드

    3. 형식

    • IP 주소 처음
    • IP 주소 끝
    • 두자리 국가 코드 (  ISO 3166 )
    • 세자리 국가 코드 (  ISO 3166 )
    • 국가명 ( ISO 3166 )
    mysql> desc IPTOCOUNTRY_T;
    +--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | IPFROM | double      |      | PRI | 0       |       |
    | IPTO   | double      |      | PRI | 0       |       |
    | C2     | varchar(2)  | YES  |     | NULL    |       |
    | C3     | varchar(3)  | YES  |     | NULL    |       |
    | NAME   | varchar(50) | YES  |     | NULL    |       |
    +--------+-------------+------+-----+---------+-------+
    5 rows in set (0.00 sec)
    

    4. IP Number

    IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D

    PHP 코드

    $ip_number = sprintf("%u",ip2long($dotted_ip_address));

    $dotted_ip_address = long2ip($ip_number);

    MySQL SQL 구문

    SELECT NAME FROM IPTOCOUNTRY_T
    WHERE INET_ATON('$remote_addr') >= IPFROM AND INET_ATON('$remote_addr') <= IPTO


    IPv4 주소 보유현황

    1. 국내 보유 IP 주소 - http://member.nida.or.kr/link/ISPIpAddress.jsp
    2. 관리자대행자별 보유 IP 주소 - http://member.nida.or.kr/link/ISPAllocation.jsp

    Posted by 부니기