웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
한국 ip list 범위 체크 및 데이터 갱신
2015.03.30 09:41
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() { $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));} |