函数:
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
47
48
49
50
51
52
53
54
|
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 ;
} |
淘宝接口:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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 "<pre>" ;
print_r(get_area( '223.67.235.28' ));
echo "</pre>" ;
|
新浪接口:
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
|
//根据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 '<pre>' ;
// 输出城市等信息 $ipInfos = GetIpLookup( '123.125.114.144' ); //baidu.com IP地址
var_dump( $ipInfos );
// 输出本地地址 echo GetIp();
|