• php--ip的处理


    1、获取ip

    /**获取请求ip**/
    function _get_request_ip(){
        //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
        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'];
        }
        $res =  preg_match ( '/[d.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
        return $res;
    }
    

      

    2、判断是否国内ip

    /**
         * 使用淘宝接口 判断ip
         * @param $ip
         * @return bool
         */
        function judgeIpByTaobao($ip)
        {
            $url = "http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
            $res = file_get_contents($url);
            if (!empty($res)) {
                $ipData = json_decode($res,true);
                if ($ipData['code']==0 && in_array($ipData['data']['country_id'],['CN','HK','TW'])) {
                    return true;
                }
            }
            return false;
        }
    

      

    3、怎么“越级”获取ip

    当我们的服务器的接口需要获取终端ip,而对接我们的接口的是一个平台,我们采用方法1获取ip,只能获取到平台的ip。

    解决方法:

    方法1:接口是否form表单提交,这里我们采用方法1就能获取用户的ip (接口是真实处理的请求参数)

    方法2:下游使用接口的方式,如curl或flie_get_contents()等方法,我们先将请求的参数在假接口(负责转发请求参数,以form表单的方式再提交到正式处理的接口)转发真处理

    这两种方法,下游平台不能继续执行代码逻辑。需要我们异步回调给下游平台

    方法3:下游平台获取用户ip,以参数的形式提交

  • 相关阅读:
    Python中的iterable该怎么理解?
    python中request中的params,data,json参数含义全解
    pycharm中查看变量值的方法汇总
    java多綫程
    spring boot 注解
    在Windows环境中使用Nginx, Consul, Consul Template搭建负载均衡和服务发现服务
    linux系统之四 常用工具
    linux系统之一 全连接与半连接队列
    linux系列之三 tcp缓冲区
    linux系统之二 文件句柄数
  • 原文地址:https://www.cnblogs.com/f-rt/p/11141429.html
Copyright © 2020-2023  润新知