반응형
각국 의 아이피 대역을 일단 디비 에 넣어주자 - 업데이트 다 종종 되는거 같다. 수시로 새로운 데이타 를 유지하면 더욱 좋겠다.
아래경로에서 최신 csv 파일을 받습니다.(zip 파일)
http://ip-to-country.webhosting.info/node/view/6
mysql_query(" CREATE TABLE `ip2c` ( `start` int(10) unsigned NOT NULL default '0', `end` int(10) unsigned NOT NULL default '0', `a2` char(2) NOT NULL default '', `a3` char(3) NOT NULL default '', `country` varchar(100) NOT NULL default '', PRIMARY KEY (`start`,`end`) ); "); $lines=file('./ip-to-country.csv'); foreach($lines as $line){ $line=trim($line); if(!preg_match('/^"([0-9]+)","([0-9]+)","(.{2})","(.{3})","(.*)"$/',$line,$matches)){ echo "error"; }else{ mysql_query('insert into ip2c values("'.($matches[1]).'","'.($matches[2]).'","'.($matches[3]).'","'.($matches[4]).'","'.($matches[5]).'");') or die(mysql_error()); } } ?>
위와 같이 디비에 삽입 하고 아래와 같이 국가별 국기 이미지를 표현 할 수 있고 다른 용도로 활용도 가능 하겠다
function flag($ip){
$re_flag=mysql_fetch_array(mysql_query("select a2 from ip2c where start<='$ip' and end>='$ip'"));//2자,3자,전체에따라 a2,a3,country
if($re_flag[a2]) $flag=$re_flag[a2];
else $flag="kr";
return $flag;
}
//예제
$expip=explode(".",$ip);
$flag=flag(($expip[0]*256*256*256)+($expip[1]*256*256)+($expip[2]*256)+$expip[3]);
$flagimg="<img src=\"국가이미지경로/".strtolower($flag).".png\" align='absmiddle'>";
echo $flagimg;
참고로 위소스는 국가이미지가 소문자 2자로 나오는경우(a2)입니다. 국가이미지 는 검색 해서 쉽게 다운 받을 수 있을거 같다
검색하시면 전체이름으로 나오는 국가이미지도 있으니, 그에맞게 하시면 되겠습니다.
참고로, 쿼리문에서 a2는 2자국가명,a3는 3자국가명, country는 전체국가명입니다
*** 추가 ****
http://www.crwflags.com/fotw/flags/
이곳 에서 세계의 국기 이미지 를 다운 받을 수 있겠다
반응형
'Programming' 카테고리의 다른 글
파일관련 PHP (0) | 2011.01.13 |
---|---|
간단한 XML PHP파싱 (0) | 2011.01.12 |
PHP 수학 함수 모음 (0) | 2011.01.11 |
PHP 를 Shell script 로 사용 (0) | 2011.01.11 |
PHP 배열 함수 (0) | 2011.01.10 |