접속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로 넣는과정에서 애로사항이 있겠군요.
어렵지 않으니 몇번의 검색과 약간의 수고만 있으면 전혀 어렵지 않게 사용가능할것입니다.
