//淘宝接口:根据ip获取所在城市名称
function
get_area(
$ip
=
''
){
if
(
$ip
==
''
){
$ip
= GetIp();
}
$url
=
"http://ip.taobao.com/service/getIpInfo.php?ip={$ip}"
;
$ret
= https_request(
$url
);
$arr
= json_decode(
$ret
,true);
return
$arr
;
}
echo
""
;
print_r(get_area(
'223.67.235.28'
));
echo
""
;
//新浪接口:根据ip获取所在城市名称
function
GetIpLookup(
$ip
=
''
){
if
(
empty
(
$ip
)){
$ip
= GetIp();
}
$res
= @
file_get_contents
(
'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='
.
$ip
);//新浪的开放API
if
(
empty
(
$res
)){
return
false; }
$jsonMatches
=
array
();
preg_match(
'#\{.+?\}#'
,
$res
,
$jsonMatches
);
if
(!isset(
$jsonMatches
[0])){
return
false; }
$json
= json_decode(
$jsonMatches
[0], true);
if
(isset(
$json
[
'ret'
]) &&
$json
[
'ret'
] == 1){
$json
[
'ip'
] =
$ip
;
unset(
$json
[
'ret'
]);
}
else
{
return
false;
}
return
$json
;
}
echo
''
;
// 输出城市等信息
$ipInfos
= GetIpLookup(
'123.125.114.144'
);
//baidu.com IP地址
var_dump(
$ipInfos
);
// 输出本地地址
echo
GetIp();
//POST请求函数
function
https_request(
$url
,
$data
= null){
$curl
= curl_init();
curl_setopt(
$curl
,CURLOPT_URL,
$url
);
curl_setopt(
$curl
,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt(
$curl
,CURLOPT_SSL_VERIFYHOST,false);
if
(!
empty
(
$data
)){
//如果有数据传入数据
curl_setopt(
$curl
,CURLOPT_POST,1);
//CURLOPT_POST 模拟post请求
curl_setopt(
$curl
,CURLOPT_POSTFIELDS,
$data
);
//传入数据
}
curl_setopt(
$curl
,CURLOPT_RETURNTRANSFER,1);
$output
= curl_exec(
$curl
);
curl_close(
$curl
);
return
$output
;
}
// 获取ip
function
GetIp(){
$realip
=
''
;
$unknown
=
'unknown'
;
if
(isset(
$_SERVER
)){
if
(isset(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]) && !
empty
(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]) &&
strcasecmp
(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
],
$unknown
)){
$arr
=
explode
(
','
,
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]);
foreach
(
$arr
as
$ip
){
$ip
= trim(
$ip
);
if
(
$ip
!=
'unknown'
){
$realip
=
$ip
;
break
;
}
}
}
else
if
(isset(
$_SERVER
[
'HTTP_CLIENT_IP'
]) && !
empty
(
$_SERVER
[
'HTTP_CLIENT_IP'
]) &&
strcasecmp
(
$_SERVER
[
'HTTP_CLIENT_IP'
],
$unknown
)){
$realip
=
$_SERVER
[
'HTTP_CLIENT_IP'
];
}
else
if
(isset(
$_SERVER
[
'REMOTE_ADDR'
]) && !
empty
(
$_SERVER
[
'REMOTE_ADDR'
]) &&
strcasecmp
(
$_SERVER
[
'REMOTE_ADDR'
],
$unknown
)){
$realip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
else
{
$realip
=
$unknown
;
}
}
else
{
if
(
getenv
(
'HTTP_X_FORWARDED_FOR'
) &&
strcasecmp
(
getenv
(
'HTTP_X_FORWARDED_FOR'
),
$unknown
)){
$realip
=
getenv
(
"HTTP_X_FORWARDED_FOR"
);
}
else
if
(
getenv
(
'HTTP_CLIENT_IP'
) &&
strcasecmp
(
getenv
(
'HTTP_CLIENT_IP'
),
$unknown
)){
$realip
=
getenv
(
"HTTP_CLIENT_IP"
);
}
else
if
(
getenv
(
'REMOTE_ADDR'
) &&
strcasecmp
(
getenv
(
'REMOTE_ADDR'
),
$unknown
)){
$realip
=
getenv
(
"REMOTE_ADDR"
);
}
else
{
$realip
=
$unknown
;
}
}
$realip
= preg_match(
"/[\d\.]{7,15}/"
,
$realip
,
$matches
) ?
$matches
[0] :
$unknown
;
return
$realip
;
}