미션: 접속자의 IP를 체크하여 영문 혹은 한글사이트로 분기시키고자 한다.
(확장: 특정국가 차단 혹은 다국어 사이트 운영)
1. 각 국가별 IP 대역 확보
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
2. 사용할 테이터 혹은 필드 정리
다운받은 CSV파일의 경우 시작IP, 종료IP, 시작번호, 종료번호, 국가기호, 국가명으로 구성
한국만 필요하므로 KR만 빼 왔다. 2013. 08. 20 현재 668개
3. 테이블 생성 및 CSV import
CREATE TABLE `ip_to_country` (
`start_ip` char(15) default NULL,
`end_ip` char(15) default NULL,
`start_num` int(10) unsigned default NULL,
`end_num` int(10) unsigned default NULL,
`country` char(2) default NULL
)
4. 분기 파일 생성
<?php
$conn = mysql_open('localhost'); // DB connect
$userLong = ip2long($_SERVER['REMOTE_ADDR']); // ip주소 숫자로 변환
$sql = "select count(*) from ip_to_country where start_num <= ".$userLong." and end_num >= ".$userLong;
$rs = mysql_query($sql) OR die(__FILE__." : Line ".__LINE__."<p>".mysql_error());
if(mysql_result($rs, 0, 0) > 0) { // 한국어 사이트 이동
$fileName = "index_kr.html";
}else { // 영문사이트 이동
$fileName = "index_en.html";
}
mysql_close($conn); //DB close
?>
'PHP' 카테고리의 다른 글
PHP 5.16 to PHP 5.3.29 (0) | 2015.05.12 |
---|---|
파일 다운로드 (서버로 다운로드가 아닌 PC로 다운로드) (0) | 2015.04.08 |
PHP 소스 암호화 php_screw (0) | 2012.10.08 |
fpdf (0) | 2012.10.08 |
CURL (0) | 2012.10.08 |