웹마스터 팁

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));
}
제목 글쓴이 날짜
한국 ip list 범위 체크 및 데이터 갱신 마루디자인 2015.03.30
APACHE 2.4.9이상 버전에서 응답속도 향상 nikestudio 2015.03.28
확장 컴포넌트 아이콘 출력 하기 [2] file 귀머거리하늘 2013.10.18
서버의 인코딩(캐릭터셋) 환경 세팅 개념. encoding, charset, characterset, unicode, utf-8, 유니코드 마루디자인 2015.03.23
php 업그레이드 후 mb_strcut 에러 문제 콜롬보. 2015.03.21
타임라인 모듈 회원 작성글/저장글 버그 오류 수정 [7] socialskyo 2015.03.20
누리고 쇼핑몰 - 배송비가 표시 안되는 경우에 [7] garnecia 2015.01.31
누리고 Ncart V1.6.1 주문페이지에서 총구매금액에 배송비가 선결제, 착불과 상관없이 무조건 포함되어 표시되는 문제 수정방법 [2] XE템플릿 2015.03.12
게시판 가로사이즈 조절과 가운데 정렬 [1] Filmfx 2013.11.02
CentOS 에서 iptables 편집후 실행이 안될때 마루디자인 2015.03.17
[SocialXE] 트위터 로그인시 프로필 사진이 표시되지 않는 문제 해결하기 [3] file TUW 2013.02.03
카카오 API로 로그인창 만들어 봤어요~~ ^^ [6] file 컴박살 2015.02.12
싸이트 도메인 주소 뒤에 XE 디렉도리 없애기 [2] 리차드조 2015.03.09
회원정보보기를 팝업으로 띄우는 방법 콜롬보. 2015.03.13
인증메일이 안올경우 - 팁이라고 해야할지...소개라고 해야할짐 모르지만 [2] socialskyo 2015.03.07
input number 숫자만 입력받기 아이폰 예외처리 wnrtnsdl2 2015.03.12
아마존 상품API 소스中 상품정보 가져오는 소스 키스투엑스이 2015.03.10
[모듈 개발] 테이블 스키마 파일 이름은 테이블명과 동일하게 [3] 산하2 2014.05.12
css table generator Ansi™ 2015.03.04
Market 모듈에서 대표사진 필수 없애기 [3] garnecia 2015.03.03