php如何获取请求接口资源的请求者的IP地址

php如何获取请求接口资源的请求者的IP地址,第1张

/**

    * 获取客户端IP地址

    * @param integer $type

    * @return mixed

    */

   function getclientip() {

       static $realip = NULL

        

       if($realip !== NULL){

           return $realip

       }

       if(isset($_SERVER)){

           if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ //但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

               $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])

               /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */

               foreach ($arr AS $ip){

                   $ip = trim($ip)

                   if ($ip != 'unknown'){

                       $realip = $ip

                       break

                   }

               }

           }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){//HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是"超级匿名代理",则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。

               $realip = $_SERVER['HTTP_CLIENT_IP']

           }else{

               if (isset($_SERVER['REMOTE_ADDR'])){ //正在浏览当前页面用户的 IP 地址

                   $realip = $_SERVER['REMOTE_ADDR']

               }else{

                   $realip = '0.0.0.0'

               }

           }

       }else{

           //getenv环境变量的值

           if (getenv('HTTP_X_FORWARDED_FOR')){//但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址

               $realip = getenv('HTTP_X_FORWARDED_FOR')

           }elseif (getenv('HTTP_CLIENT_IP')){ //获取客户端IP

               $realip = getenv('HTTP_CLIENT_IP')

           }else{

               $realip = getenv('REMOTE_ADDR')  //正在浏览当前页面用户的 IP 地址

           }

       }

       preg_match("/[\d\.]{7,15}/", $realip, $onlineip)

       $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'

       return $realip

   }

function GetIpLookup($ip = ''){

$res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip)

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

}

$ipInfos = $this->GetIpLookup('222.223.191.12')//baidu.com IP地址

var_dump($ipInfos)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7318572.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存