접속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시간정도 걸렸습니다. ㅡㅡ;
댓글 4개
초보라 좀 더 쉽게... ^^;;;
위 소스에서 해야할일은 다운받은 csv타입의 데이터들을 자신의 DB로 넣어서 그 데이터를 가지고 아이피를 조회하는것 입니다.
달리 어려운부분은 없지만 초보라면 csv 타입의 데이터를 자신의 DB로 넣는과정에서 애로사항이 있겠군요.
어렵지 않으니 몇번의 검색과 약간의 수고만 있으면 전혀 어렵지 않게 사용가능할것입니다.
게시판 목록
그누4 팁자료실
나누면 즐거움이 커집니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 369 |
|
19년 전 | 10647 | |
| 368 | 19년 전 | 5865 | ||
| 367 | 19년 전 | 4101 | ||
| 366 | 19년 전 | 5226 | ||
| 365 | 19년 전 | 4707 | ||
| 364 | 19년 전 | 2478 | ||
| 363 | 19년 전 | 4501 | ||
| 362 | 19년 전 | 3795 | ||
| 361 | 19년 전 | 4042 | ||
| 360 | 19년 전 | 7932 | ||
| 359 | 19년 전 | 3126 | ||
| 358 | 19년 전 | 5641 | ||
| 357 | 19년 전 | 6655 | ||
| 356 | 19년 전 | 3257 | ||
| 355 | 19년 전 | 4100 | ||
| 354 | 19년 전 | 4347 | ||
| 353 |
|
19년 전 | 5301 | |
| 352 | 19년 전 | 4092 | ||
| 351 |
sanxiyn
|
19년 전 | 4688 | |
| 350 |
|
19년 전 | 6393 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기