クライアント + サーバーの IP および地理的位置情報を取得する
IP: 113.83.***.**
返品ステータス: 1
IP範囲ストラト: 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){ //Client
- $userip=egetip_joy(); // クライアントIP
- }else{ //Server
- $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 remote_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'),'unknown'))
- {
- $ip=getenv('HTTP_X_FORWARDED_FOR');
- }
- elseif( getenv(' REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown'))
- {
- $ip=getenv('REMOTE_ADDR');
- }
- elseif(isset($_SERVER['REMOTE_ADDR'])&&$ _SERVER[' REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))
- {
- $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]; $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 'Return status:'.$iplookup['ret']."
echo 'IP 範囲 Strat:'.$iplookup['start']." "; - echo 'IP rangeEnd:'.$iplookup['end']."
" ;
- echo '国:'.unescape($iplookup['country'])."
";
- echo 'Province:'.unescape($iplookup['province'])."
" echo 'City:'.unescape($iplookup['city'])." ";
- echo 'District/County:'.unescape($iplookup['district'])."
- echo 'Line:'.unescape($iplookup['isp'])."
";
- echo 'Type:'.$iplookup['type']."
"; '説明:'.$iplookup['desc']." ";
- //print_r($iplookup);
-
-
- コードをコピー
-
|