웹마스터 팁

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));
}
제목 글쓴이 날짜
즐겨찾기 소스 - 파비콘등록 soroweb 2015.04.16
누리고 쇼핑몰 상품취소 혹은 반품시 마일리지 자동회복하기 [6] garnecia 2015.01.21
확장변수에 시분초 추가하기 [1] file 해떨 2015.04.15
JS로 IE 6,7,8 구분하기 [4] 키스투엑스이 2015.04.14
|웹폰트(네이버 맑은 고딕, 나눔고딕) 적용하기 [1] 다큰왕자 2014.03.18
나눔고딕 웹 폰트 적용하기. [10] 정찬명 2011.12.15
에디터에서 URL 클릭시 "http://" 삭제하는 방법 [2] 콜롬보. 2015.03.13
통합검색 사용 가부 설정 및 특정 그룹만 사용가능하게 제한 설정 기능 추가 - 보안이슈가 될 수 있는 부분 [1] sejin7940 2015.04.10
요청한 기능을 실행할 수 있는 권한이 없습니다. - 오류해결 file I-JEX 2015.04.10
댓글 새로고침 수정 [22] Lansi 2013.09.06
메인 로고 및 메인 이미지 변경 방법 [1] file okcashbag042 2015.04.08
웹 재요청 방지 및 트래픽 감소를 위한 방법 마루디자인 2015.04.06
setModule() 오류 발생시 qkrcjfgus33 2015.04.04
ie11에서 통합검색시 page가 바뀌면 검색키워드가 없어지거나 이상한 글자로 바뀌는 것에 대한 팁 garnecia 2015.04.03
[고급] 내 XE 모듈에 editor 삽입하기 [8] 개발해보쟈 2013.01.22
스케치북게시판 최신버전에 네이트온 /마이피플/플립보드 추가하는 방법 [4] file 가을풍경 2015.03.09
로고 만들기 귀찮을때^^* [1] 수백 2015.03.06
[스케치북5] 댓글 수정 간략화하기.. (새로고침 없이 하는 방법 추가) [16] file XE만세 2014.01.05
php 5.6에서 인증메일 SMTP 연결에 실패할때.. file 루비스코 2015.03.31
한국 ip list 범위 체크 및 데이터 갱신 마루디자인 2015.03.30