클라이언트 서버 IP 및 지리적 위치 정보 얻기
IP: 113.83.***.**
반품 상태: 1
IP 범위 Strat: 113.83.0.0
IP 범위 끝: 113.83.255.255
국가: 중국
성: 광동
도시: 후이저우
지구/군:
회선: 통신
유형:
설명:
- /**
- * 클라이언트 서버 IP 및 지리적 위치 정보 얻기 Sina iplookup
- *
- * @Support: QQ 910111100 (JoY)
- * @Time: 2012.10.11 15:50:00
- * @ HZapi.com (http://www.hzapi.com/)
- *
- */
- //지리적 위치 정보 가져오기
- function iplookup($ip=1){
- if($ip){ //클라이언트
- $userip=egetip_joy(); //클라이언트 IP
- }else{ //서버
- $domain=$_SERVER['HTTP_HOST'];
- $userip=gethostbyname($domain );
- }
- //시나 지리적 위치정보 반환
- $json=@file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format =js&ip= '.$userip);
- $patterns = array();
- $patterns[0] = '/var 원격_ip_info = /';
- $patterns[1] = '/;/' ;
- $patterns[2] = '/Wu/';
- $find = array();
- $find[0] = "";
- $find[1] = ""
- $find[2] = "%u";
- $json = preg_replace($patterns, $find, $json); //추가 문자 필터링
- $json_arr=json_decode($json,true)
- return $json_arr;
- }
- //IP 가져오기
- function egetip_joy(){
- if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown' ))
- {
- $ip=getenv('HTTP_CLIENT_IP');
- }
- elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'알 수 없음'))
- {
- $ip=getenv('HTTP_X_FORWARDED_FOR');
- }
- elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'알 수 없음'))
- {
- $ip =getenv('REMOTE_ADDR');
- }
- elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'알 수 없음 '))
- {
- $ip=$_SERVER['REMOTE_ADDR'];
- }
- $ip=preg_replace("/^([d.] ).*/","1" ,$ip );
- return $ip;
- }
- /**
- * JS에서 unescape 시뮬레이션
- *
- * @Support: QQ 910111100 (JoY)
- * @Time: 2012.09.29 15:50:00
- * @HZapi.com (http : //www.hzapi.com/)
- * echo unescape('%u4e1c%u6e56%u82b1%u56ed4%u53f7%u5c0f%u533a');
- */
- function unescape($str) {
- $str = rawurldecode($str);
- preg_match_all ("/(?:%u.{4})|.{4};|d ;|. /U",$str,$r);
- $ar = $r[0 ];
- foreach($ar as $k=>$v) {
- if(substr($v,0,2) == "%u")
- {
- $ar[ $k] = iconv("UCS-2","utf-8//IGNORE",pack("H4",substr($v,-4)));
- }
- elseif(substr($ v,0 ,3) == "")
- {
- $ar[$k] = iconv("UCS-2","utf-8",pack("H4",substr($v, 3,- 1)));
- }
- elseif(substr($v,0,2) == "")
- {
- echo substr($v,2,-1 )." ";
- $ar[$k] = iconv("UCS-2","utf-8",pack("n",substr($v,2,-1)));
- }
- }
- return Join("",$ar);
- }
-
-
- $iplookup=iplookup(); //iplookup(1) 매개변수가 비어 있지 않으면 가져옵니다. 서버측 IP
-
- echo "IP:".egetip_joy()."
";
- echo '반환 상태:'.$iplookup['ret']."
" ;
- echo 'IP 범위 Strat:'.$iplookup['start']."
";
- echo 'IP rangeEnd:'.$iplookup['end']."
- echo '국가:'.unescape($iplookup['country'])."
";
- echo '지방:'.unescape($iplookup['province']). "
";
- echo '도시:'.unescape($iplookup['city'])."
";
- echo '지구/군:'.unescape($iplookup[ 'district'])."
";
- echo 'Line:'.unescape($iplookup['isp'])."
";
- echo 'Type:'.$ iplookup['type']."
";
- echo '설명:'.$iplookup['desc']."
";
- //print_r($iplookup);
코드 복사
|