php 获取ip所在地

下面就是实现的过程,

  1. 首先,访问的文章,这个很好说,记录id就行

  2. 获取用户ip,这个函数网上也是一抓一大把,我找了一个解析做得比较详细的贴在下面

    function getIP(){            

        if (isset($_SERVER)){

            if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

                $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];

            } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {

                $realip = $_SERVER["HTTP_CLIENT_IP"];

            } else {

                $realip = $_SERVER["REMOTE_ADDR"];

            }

        } else {

            if (getenv("HTTP_X_FORWARDED_FOR")){

                $realip = getenv("HTTP_X_FORWARDED_FOR");

            } else if (getenv("HTTP_CLIENT_IP")) {

                $realip = getenv("HTTP_CLIENT_IP");

            } else {

                $realip = getenv("REMOTE_ADDR");

            }

        }    

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

            return $realip;

        else

            return '';

    }

  3. 根据ip获取所在地的信息,这个网上也很多,主流的是调新浪和淘宝的接口,我找两个跑了一下

    image.png

    很不走运,两个都跑不通.然后我发现这些文章的发布时间基本都是18年之前,我就想,是不是访问量太大了,官方做了升级,然后我去个淘宝的ip库,果然发现了一个好玩的提示

    image.png

    居然提示我少了一个参数,然后经过官网的测试,找到了缺失的参数,如下图

    image.png

    function getCity($ip = '')

    {

        if($ip == ''){

            $data = '';

        }else{

            $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip.'&accessKey=alibaba-inc';

            $ip=json_decode(file_get_contents($url));   

            if((string)$ip->code=='1'){

               return false;

            }

            $data = (array)$ip->data;

        }

        

        return $data;   

    }

    print_r(getCity('62.210.139.12'));


    希望阿里爸爸不会怪我,无量天尊~


    友情提示,curl比file_get_contents性能更稳定


发表评论