You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

289 lines
9.1 KiB

7 years ago
7 years ago
7 years ago
  1. <?php
  2. function curl($url) {
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL, $url);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  7. $g = curl_exec($ch);
  8. curl_close($ch);
  9. return $g;
  10. }
  11. function get_ip_info($q)
  12. {
  13. if( empty($q) OR $q == '0.0.0.0' OR $q == '127.0.0.1') return FALSE;
  14. $key = "2017082622061381677054";
  15. $url = "http://whois.kisa.or.kr/openapi/whois.jsp?query={$q}&key={$key}&answer=json";
  16. $query = curl($url);
  17. if( $query )
  18. {
  19. $result= json_decode($query, TRUE);
  20. $data=array();
  21. $data['countryCode'] = $result['whois']['countryCode'];
  22. $data['country'] = get_country_name($data['countryCode']);
  23. $result = isset($result['whois']['korean']) && $result['whois']['korean'] ?$result['whois']['korean'] : array();
  24. $data['addr'] = isset($result['user']['netinfo']['addr']) && $result['user']['netinfo']['addr'] ? $result['user']['netinfo']['addr'] : '' ;
  25. $data['org'] = isset($result['user']['netinfo']['orgName']) && $result['user']['netinfo']['orgName'] ? $result['user']['netinfo']['orgName'] : '';
  26. return $data;
  27. }
  28. return FALSE;
  29. }
  30. function get_country_name($code)
  31. {
  32. $code = strtoupper($code);
  33. $countryList = array(
  34. "AD" => "안도라",
  35. "AE" => "아랍에미리트",
  36. 'AF' => '아프가니스탄',
  37. "AG" => "앤티가 바부다",
  38. "AI" => "앵궐라",
  39. "AL" => "알바니아",
  40. "AM" => "아르매니아",
  41. "AN" => "네덜란드령 안틸레스",
  42. 'AO' => '앙골라',
  43. 'AQ' => '남극',
  44. 'AR' => '아르헨티나',
  45. 'AS' => '아메리칸사모아',
  46. 'AT' => '오스트리아',
  47. "AU" => "호주",
  48. 'AW' => '아루바',
  49. 'AX' => '올란드 제도',
  50. 'AZ' => '아제르바이잔',
  51. 'BA' => '보스니아 헤르체고비나',
  52. 'BB' => '바베이도스',
  53. 'BD' => '방글라데시',
  54. 'BE' => '벨기에',
  55. 'BF' => '부르키나파소',
  56. 'BG' => '불가리아',
  57. 'BH' => '바레인',
  58. 'BI' => '부룬디',
  59. 'BJ' => '베냉',
  60. 'BM' => '버뮤다',
  61. 'BN' => '브루나이',
  62. 'BO' => '볼리비아',
  63. 'BR' => '브라질',
  64. 'BS' => '바하마',
  65. 'BT' => '부탄',
  66. 'BV' => '부베 섬',
  67. 'BW' => '보츠와나',
  68. 'BY' => '벨라루스',
  69. 'BZ' => '벨리즈',
  70. 'CA' => '캐나다',
  71. 'CC' => '코코스 제도',
  72. 'CD' => '콩고 민주 공화국',
  73. 'CF' => '중앙아프리카 공화국',
  74. 'CG' => '콩고 공화국',
  75. "CH" => '스위스',
  76. "CI" => "코트디부아르",
  77. "CK" => '쿡 제도',
  78. "CL" => '칠레',
  79. "CM" => '카메룬',
  80. 'CN' => '중화인민공화국',
  81. 'CO' => '콜롬비아',
  82. 'CR' => '코스타리카',
  83. 'CS' => '세르비아 몬테네그로',
  84. 'CU' => '쿠바',
  85. 'CV' => '카보베르데',
  86. 'CX' => '크리스마스 섬',
  87. 'CY' => '키프로스',
  88. 'CZ' => '체코',
  89. 'DE' => '독일',
  90. 'DJ' => '지부티',
  91. 'DK' => '덴마크',
  92. 'DM' => '도미니카',
  93. 'DO' => '도미니카 공화국',
  94. 'DZ' => '알제리',
  95. 'EC' => '에콰도르',
  96. 'EE' => '에스토니아',
  97. 'EG' => '이지브',
  98. 'EH' => '서사하라',
  99. 'ER' => '에리트레아',
  100. 'ES' => '스페인',
  101. 'ET' => '에티오피아',
  102. 'FI' => '핀란드',
  103. 'FJ' => '피지',
  104. 'FK' => '포클랜드 제도',
  105. 'FM' => '미크로네시아 연방',
  106. 'FO' => '페로제도',
  107. 'FR' => '프랑스',
  108. 'GA' => '가봉',
  109. 'GB' => '영국',
  110. 'GD' => '그레나다',
  111. 'GE' => '그루지야',
  112. 'GF' => '프랑스령 기아나',
  113. 'GH' => '가나',
  114. 'GI' => '지브롤터',
  115. "GL" => '그린란드',
  116. "GM" => '감비아',
  117. 'GN' => '기니',
  118. 'GP' => '과들루프',
  119. 'GQ' => '적도 기니',
  120. 'GR' => '그리스',
  121. 'GS' => '사우스조지아 사우스샌드위치 제도',
  122. 'GT' => '과테말라',
  123. 'GU' => '괌',
  124. 'GW' => '기니비사우',
  125. 'GY' => '가이아나',
  126. 'HK' => '홍콩',
  127. 'HM' => '허드 맥도널드 제도',
  128. 'HN' => '온두라스',
  129. 'HR' => '크로아티아',
  130. 'HT' => '아이티',
  131. 'HU' => '헝가리',
  132. 'ID' => '인도네시아',
  133. "IE" => '아일랜드',
  134. "IL" => '이스라엘',
  135. "IN" => '인도',
  136. "IO" => '영국령 인도양 지역',
  137. "IQ" => '이라크',
  138. 'IR' => '이란',
  139. "IS" => '아이슬란드',
  140. "IT" => '이탈리아',
  141. "JM" => '자메이카',
  142. "JO" => "요르단",
  143. "JP" => '일본',
  144. "KE" => '케냐',
  145. "KG" => '키르기스스탄',
  146. "KH" => "캄보디아",
  147. "KI" => "키리바시",
  148. "KM" => "코모로",
  149. "KN" => "세인트키츠 네비스",
  150. "KP" => "조선민주주의인민공화국",
  151. "KR" => "대한민국",
  152. "KW" => "쿠웨이트",
  153. "KY" => "케이맨 제도",
  154. "KZ" => "카자흐스탄",
  155. "LA" => "라오스",
  156. "LB" => "레바논",
  157. "LC" => "세인트루시아",
  158. "LI" => "리히텐슈타인",
  159. "LK" => "스리랑카",
  160. "LR" => "라이베리아",
  161. "LS" => "레소토",
  162. "LT" => "리투아니아",
  163. "LU" => "룩셈부르크",
  164. "LV" => "라트비아",
  165. "LY" => "리비아",
  166. "MA" => "모로코",
  167. "MC" => "모나코",
  168. "MD" => "몰도바",
  169. "MG" => "마다가스카르",
  170. "MH" => "마셜 제도",
  171. "MK" => "마케도니아 공화국",
  172. "ML" => "말리",
  173. "MM" => "미얀마",
  174. "MN" => "몽골",
  175. "MO" => "마카오",
  176. "MP" => "북마리아나 제도",
  177. "MQ" => "마르티니크",
  178. "MR" => "모리타니",
  179. "MS" => "몬트세랫",
  180. "MT" => "몰타",
  181. "MU" => "모리셔스",
  182. "MV" => "몰디브",
  183. "MW" => "말라위",
  184. "MX" => "멕시코",
  185. "MY" => "말레이시아",
  186. "MZ" => "모잠비크",
  187. "NA" => "나미비아",
  188. "NC" => "누벨칼레도니",
  189. "NE" => "니제르",
  190. "NF" => "노퍽 섬",
  191. "NG" => "나이지리아",
  192. "NI" => "니카롸과",
  193. "NL" => "네덜란드",
  194. "NO" => "노르웨이",
  195. "NP" => "네팔",
  196. "NR" => "나우루",
  197. "NU" => "니우에",
  198. "NZ" => "뉴질랜드",
  199. "OM" => "오만",
  200. "PA" => "파나마",
  201. "PE" => "페루",
  202. "PF" => "프랑스령 폴리네시아",
  203. "PG" => "파푸아 뉴기니",
  204. "PH" => "필리핀",
  205. "PK" => "파키스탄",
  206. "PL" => "폴란드",
  207. "PM" => "생피에르 미클롱",
  208. "PN" => "핏메언 제도",
  209. "PR" => "푸에르토리코",
  210. "PS" => "팔레스타인",
  211. "PT" => "포르투갈",
  212. "PW" => "팔라우",
  213. "PY" => "파라과이",
  214. "QA" => "카타르",
  215. "RE" => "레위니옹",
  216. "RO" => "루마니아",
  217. "RU" => "러시아",
  218. "RW" => "르완다",
  219. "SA" => "사우디아라비아",
  220. "SB" => "솔로몬 제도",
  221. "SC" => "세이셸",
  222. "SD" => "수단",
  223. "SE" => "스웨덴",
  224. "SG" => "싱가포르",
  225. "SH" => "세인트헬레나",
  226. "SI" => "슬로베니아",
  227. "SJ" => "스발바르 얀마옌",
  228. "SK" => "슬로바키아",
  229. "SL" => "시에라리온",
  230. "SM" => "산마리노",
  231. "SN" => "세네갈",
  232. "SO" => "소말리아",
  233. "SR" => "수리남",
  234. "ST" => "상투메 프린시페",
  235. "SV" => "엘살바도르",
  236. "SY" => "시리아",
  237. "SZ" => "스와질란드",
  238. "TC" => "터크스 케이커스 제도",
  239. "TD" => "차드",
  240. "TF" => "프랑스령 나부와 남극 지역",
  241. "TG" => "토고",
  242. "TH" => "타이",
  243. "TJ" => "타자키스탄",
  244. "TK" => "토켈라우 제도",
  245. "TL" => "동티모르",
  246. "TM" => "투르크메니스탄",
  247. "TN" => "튀니지",
  248. "TO" => "통가",
  249. "TR" => "터키",
  250. "TT" => "트리니다드 토바고",
  251. "TV" => "투발루",
  252. "TW" => "대만",
  253. "TZ" => "탄자니아",
  254. "UA" => "우크라이나",
  255. "UG" => "우간다",
  256. "UM" => "미국령 군소 제도",
  257. "US" => "미국",
  258. "UY" => "우루과이",
  259. "UZ" => "우즈베키스탄",
  260. "VA" => "바티칸 시국",
  261. "VC" => "세인트빈센트 그레나딘",
  262. "VE" => "베네수엘라",
  263. "VG" => "영국령 버진아일랜드",
  264. "VI" => "미국령 버진아일랜드",
  265. "VN" => "베트남",
  266. "VU" => "바누아투",
  267. "WF" => "월리스 푸투나",
  268. "WS" => "사모아",
  269. "YE" => "예맨",
  270. "YT" => "마요트",
  271. "ZA" => "남아프리카 공화국",
  272. "ZM" => "잠비아",
  273. "ZW" => "짐바브웨"
  274. );
  275. if( !$countryList[$code] ) return $code;
  276. else return $countryList[$code];
  277. }