美文网首页
php实现IP定位

php实现IP定位

作者: CSeroad | 来源:发表于2018-06-05 21:08 被阅读10次

    注册成为百度用户,成为地图开放平台开发者,获取服务密钥。通过百度地图API接口获取经纬度,进而通过API接口进行全球逆地理编码服务,简单说就是通过经纬度再次定位到具体位置。

    代码为:

    <!DOCTYPE  html>

    <html>

    <head>

    <title>IP定位具体位置</title>

    </head>

    <body>

    <form  action="" method="POST">

    请输入公网IP:<input   type="text"   name="ip">

    <input  type="submit"  name="submit" >

    </form>

    </body>

    </html>

    <?php

    header("Content-Type:text/html;charset=utf-8;");

    $ip=@$_POST['ip'];

    //正则匹配IP

    if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$ip)){

    $url_ip="http://api.map.baidu.com/location/ip?ip=$ip&ak=您的ak&coor=bd09ll";

    //注册后得到的服务密钥ak

    $str=file_get_contents($url_ip);

    $arr=json_decode($str,true);

    if ($arr["status"]==0){

    $x=$arr['content']['point']['x'];

    $y=$arr['content']['point']['y'];

    $url="http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=$y,$x&output=json&pois=1&ak=您的ak";

    //注意y代表纬度,x代表精度

    $str=file_get_contents($url);

    //var_dump($str);

    //以下自由发挥

    preg_match("/{.+}/", $str, $result);

    $arr=json_decode($result[0],true);

    $num=count($arr["result"]["pois"]);

    for ($i=0; $i < $num; $i++) {

    echo '<font   color="#ff0000">'.$ip."-----".$arr["result"]["pois"][$i]["addr"]."<br/>";

    }

    }else{

    echo "<h2>not find IP</h2>";

    }

    }else{

    echo "<h2>not  really  IP</h2>";

    }

    ?>

    注意替换ak

    附加一图:

    IP定位

    参考资料:

    http://lbsyun.baidu.com/index.php?title=webapi/ip-api

    http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad

    相关文章

      网友评论

          本文标题:php实现IP定位

          本文链接:https://www.haomeiwen.com/subject/bsimsftx.html