웹마스터 팁

getKoreaNationIpList(); 로 json 파일 저장 한번 하고,

echo matchKoreaNationIp('203.238.183.231') ? '한국' : '외국';

License : BSD

1
2
3
4
5
6
7
8
9
10
11
cidr 로 하면 데이터가 너무 커서 버림.
 
데이터가 json 이니 js 버전도 가능.
 
 
 
getKoreaNationIpList(); 로 json 파일 저장 한번 하고,
 
echo matchKoreaNationIp('203.238.183.231') ? '한국' : '외국';
 
License : BSD

[ ▼ 참고 Source ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function matchKoreaNationIp($ip) {
  static $nip = null;
  if(null === $nip) $nip = json_decode(file_get_contents(dirname(__FILE__).'/ipv4list.ko.json'));
  $ip = sprintf('%08x', ip2long($ip));
  $if = substr($ip, 0, 2);
  if(!isset($nip->{$if})) return false;
  $nf = &$nip->{$if};
  foreach($nf as $n) {
    if($n[0] > $ip) continue;
    if($n[1] < $ip) continue;
    return true;
  }
  return false;
}
 
function getKoreaNationIpList() {
  $xml = simplexml_load_file('http://ip.kisa.or.kr/ipas/jsp/api/ipv4list.jsp');
 
  $ips = array();
  foreach($xml->ipv4 as $ipv4) {
    $ips[$ipv4->sno.''] = $ipv4->eno;
  }
  ksort($ips);
 
  $ranges = array();
 
  $beno = 0;
  $sf = '';
  foreach($ips as $sip => $eip) {
    echo $sip, ' ', $eip, "\n";
    $sno = ip2long($sip);
    if($sno == $beno) {
      $sh = array_pop($ranges[$sf])[0];
    } else {
      $sh = sprintf('%08x', $sno);
    }
    $eno = ip2long($eip);
    $eh = sprintf('%08x', $eno);
    $sf = substr($sh, 0, 2);
    if(!isset($ranges[$sf])) $ranges[$sf] = array();
    $ranges[$sf][] = array($sh, $eh);
    $beno = $eno + 1;
  }
 
  file_put_contents(dirname(__FILE__).'/ipv4list.ko.json', json_encode($ranges));
}
제목 글쓴이 날짜
(version 1.6)새글과 새댓글을 알림받는 앱을 직접 만들어보세요(XE 홈페이지와 연동되는 GCM을 이용한 푸시 안드로이드 앱 만들기 가이드-XE 알림센터 연동) [23] 단희아빠 2015.03.21
서버의 인코딩(캐릭터셋) 환경 세팅 개념. encoding, charset, characterset, unicode, utf-8, 유니코드 마루디자인 2015.03.23
누리고쇼핑몰 postcodify 주소모듈 설치시 최근배송지 클릭시 오류해결방법 [5] garnecia 2015.03.27
APACHE 2.4.9이상 버전에서 응답속도 향상 nikestudio 2015.03.28
한국 ip list 범위 체크 및 데이터 갱신 마루디자인 2015.03.30
php 5.6에서 인증메일 SMTP 연결에 실패할때.. file 루비스코 2015.03.31
ie11에서 통합검색시 page가 바뀌면 검색키워드가 없어지거나 이상한 글자로 바뀌는 것에 대한 팁 garnecia 2015.04.03
모듈에서 무조건 JSON/XML 형식으로 출력하기 [1] Devel0per 2015.04.03
setModule() 오류 발생시 qkrcjfgus33 2015.04.04
웹 재요청 방지 및 트래픽 감소를 위한 방법 마루디자인 2015.04.06
메인 로고 및 메인 이미지 변경 방법 [1] file okcashbag042 2015.04.08
요청한 기능을 실행할 수 있는 권한이 없습니다. - 오류해결 file I-JEX 2015.04.10
모바일뷰 사용 안 할때 (반응형등) 에도 '모바일에서 최적화된 화면으로 보기' 가 나오는 버그 패치 sejin7940 2015.04.10
통합검색 사용 가부 설정 및 특정 그룹만 사용가능하게 제한 설정 기능 추가 - 보안이슈가 될 수 있는 부분 [1] sejin7940 2015.04.10
1.8 XEDITION 에서 로그인xe 사용하여 네이버 로그인 연동하기 [7] file karutian 2015.04.10
JS로 IE 6,7,8 구분하기 [4] 키스투엑스이 2015.04.14
확장변수에 시분초 추가하기 [1] file 해떨 2015.04.15
XEDITON 레이아웃에 다국어(국기) 선택 버튼 추가하기 [7] file ehii 2015.04.15
즐겨찾기 소스 - 파비콘등록 soroweb 2015.04.16
XE 1.8 대응 apache 2.2 / php 5.5 / MariaDB 10 설치 [11] 간장게장같은남자 2015.04.19