zoukankan      html  css  js  c++  java
  • php获取客户端ip地址方法

     1 /**
     2      * 获取客户端IP地址
     3      * @param integer   $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
     4      * @param boolean   $adv 是否进行高级模式获取(有可能被伪装)
     5      * @return mixed
     6      */
     7     public function ip($type = 0, $adv = true)
     8     {
     9         $type      = $type ? 1 : 0;
    10         static $ip = null;
    11         if (null !== $ip) {
    12             return $ip[$type];
    13         }
    14 
    15         $httpAgentIp = Config::get('http_agent_ip');
    16 
    17         if ($httpAgentIp && isset($_SERVER[$httpAgentIp])) {
    18             $ip = $_SERVER[$httpAgentIp];
    19         } elseif ($adv) {
    20             if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    21                 $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    22                 $pos = array_search('unknown', $arr);
    23                 if (false !== $pos) {
    24                     unset($arr[$pos]);
    25                 }
    26                 $ip = trim(current($arr));
    27             } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    28                 $ip = $_SERVER['HTTP_CLIENT_IP'];
    29             } elseif (isset($_SERVER['REMOTE_ADDR'])) {
    30                 $ip = $_SERVER['REMOTE_ADDR'];
    31             }
    32         } elseif (isset($_SERVER['REMOTE_ADDR'])) {
    33             $ip = $_SERVER['REMOTE_ADDR'];
    34         }
    35         // IP地址合法验证
    36         $long = sprintf("%u", ip2long($ip));
    37         $ip   = $long ? [$ip, $long] : ['0.0.0.0', 0];
    38         return $ip[$type];
    39     }
  • 相关阅读:
    [BZOJ3413]匹配
    [BZOJ3879]SvT
    [BZOJ1339] [Baltic2008] Mafia / 黑手党
    [BZOJ1834] [ZJOI2010] network 网络扩容
    [BZOJ1449] [JSOI2009]球队收益 / [BZOJ2895] 球队预算
    [BZOJ2597] [WC2007]剪刀石头布
    [BZOJ1283]序列
    [BZOJ2127]happiness
    Java公开课-04.异常
    Java公开课-03.内部类
  • 原文地址:https://www.cnblogs.com/myIvan/p/10277580.html
Copyright © 2011-2022 走看看