접속IP가지고 해당 국기표시하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

접속IP가지고 해당 국기표시하기 정보

접속IP가지고 해당 국기표시하기

본문

두시간여동안 사이트찾아 헤메다가 드뎌 완료했습니다.^^
우선 필요한 파일부터 다운받고 시작하죠.

http://ip-to-country.webhosting.info/
위 사이트에 방문하셔서 국가별 아이피 정보가 들어간 CSV 타입의 파일을 다운받습니다.
오른쪽 메뉴에 download 를 클릭하시면 됩니다. [ip-to-country.csv.zip] [국기이미지]

파일링크의 경우 파일명이 바뀌거나 경로가 잘못되면 바로 다운되지 않을수도 있으니 그때는 직접가셔서 다운받으셔도 됩니다. [바로가기]


위 파일들이 준비되었으면 다음 ip-to-country.csv.zip 파일을 적당한곳에 풀어서 자신의 계정으로 업로드 합니다.
그리고 해당 파일의 정보를 자신의 DB로 입력합니다.
csv파일을 DB로 입력하시는 방법을 모르신다면 아래 소스를 참고하세요.


<?
/*
CSV import script for PHP4/5, Willem Spruijt, 2005
Assuming that your ip-to-country table is created using this query:

CREATE TABLE iptocountry
        (ip_from int(4) unsigned,
         ip_to int(4) unsigned,
         country_code2 char(2),
         country_code3 char(3),
         country_name varchar(50));
*/

/*
Defines
*/
define("SOURCE_FILENAME", "ip-to-country.csv");
define("SEPERATOR_COL", ",");
define("SEPERATOR_ROW", "n");

/*
Open database connexion & cleanup
*/

mysql_connect("localhost", "유저네임", "암호");
mysql_select_db("디비네임");
mysql_query("DELETE FROM iptocountry") or die (mysql_error());


/*
Open file for reading
*/
$fhFile     = fopen(SOURCE_FILENAME, "r") or die ("Error opening ".SOURCE_FILENAME);
$sData      = fread($fhFile, filesize(SOURCE_FILENAME));

$aData      = explode(SEPERATOR_ROW, $sData);

foreach($aData as $sRow) {
    $aRow = explode(SEPERATOR_COL, $sRow);
    /* Prepare values for query */
    foreach($aRow as $sKey => $sValue) {
        $sValue         = str_replace(""", "", $sValue);
        $sValue         = addslashes($sValue);
        $aRow[$sKey]    = "'".$sValue."'";
    }
    list($sIpFrom, $sIpTo, $sCountryCode2, $sCountryCode3, $sCountryName) = $aRow;
    $sQuery = "INSERT INTO iptocountry
                                (ip_from,
                                 ip_to,
                                 country_code2,
                                 country_code3,
                                 country_name)
                            VALUES
                                 (".$sIpFrom.",
                                  ".$sIpTo.",
                                  ".$sCountryCode2.",
                                  ".$sCountryCode3.",
                                  ".$sCountryName."
                            );";
    
    mysql_query($sQuery) or die (mysql_error());
}

?>


자 위작업이 끝나셨다면 실제 해당 DB에서 IP를 대조하여 국가코드 받는 간단한 소스를 보여드리겠습니다.

<?
 $connect = mysql_connect("localhost","유저네임","암호") or die("서버 연결 에러입니다.");
 mysql_select_db("디비네임") or die("DataBase 연결 에러입니다.");

$ip = $_SERVER['REMOTE_ADDR']; //접속자아이피를 받음
$ip_number = sprintf("%u", ip2long($ip));
//echo $ip_number;

 $sql = " select * from iptocountry where ip_from <= '$ip_number' AND ip_to >= '$ip_number' ";
 $result = mysql_query($sql);
 while($data=mysql_fetch_array($result)) {
  $country_img  = strtolower($data[country_code2]);
  $country_code  = $data[country_code2];
  $country    = $data[country_name];

  echo "<img src='이미지경로/$country_img.png'> $ip_num ($country)</br>";
 }

?>


첨 봤을때는 어려운건줄알았는데 의외로 쉽네요.
필요하신분 자신의 홈에다 적용해 보세요. ^^

전 자료 다운받고 올리고 소스손보고 하는데 1시간정도 걸렸습니다. ㅡㅡ;

추천
3

댓글 4개

아이피를 가지고 해당아이피의 국적을 알아내는것인데요.
위 소스에서 해야할일은 다운받은 csv타입의 데이터들을 자신의 DB로 넣어서 그 데이터를 가지고 아이피를 조회하는것 입니다.

달리 어려운부분은 없지만 초보라면 csv 타입의 데이터를 자신의 DB로 넣는과정에서 애로사항이 있겠군요.
어렵지 않으니 몇번의 검색과 약간의 수고만 있으면 전혀 어렵지 않게 사용가능할것입니다.
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT