PHP获取用户真实IP地址

  if (!function_exists('get_client_ip')) {
            /**
             * 获取用户ip
             * Author:刘星麟
             * @return array|false|mixed|string
             */
            function get_client_ip()
            {
                $ip = "";
                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'];
                }
                return $ip;
            }
        }
  /**
             * ThinkPHP3.2.3
             * 获取客户端IP地址
             * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
             * @param boolean $adv 是否进行高级模式获取(有可能被伪装)
             * @return mixed
             */
            function get_client_ip($type = 0, $adv = false)
            {
                $type = $type ? 1 : 0;
                static $ip = null;
                if ($ip !== null)
                    return $ip[$type];
                if ($adv) {
                    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                        $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
                        $pos = array_search('unknown', $arr);
                        if (false !== $pos)
                            unset($arr[$pos]);
                        $ip = trim($arr[0]);
                    } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
                        $ip = $_SERVER['HTTP_CLIENT_IP'];
                    } elseif (isset($_SERVER['REMOTE_ADDR'])) {
                        $ip = $_SERVER['REMOTE_ADDR'];
                    }
                } elseif (isset($_SERVER['REMOTE_ADDR'])) {
                    $ip = $_SERVER['REMOTE_ADDR'];
                }
                // IP地址合法验证
                $long = sprintf("%u", ip2long($ip));
                $ip = $long ? [$ip, $long] : ['0.0.0.0', 0];
                return $ip[$type];
            }

猜你喜欢

转载自blog.csdn.net/liuxl57805678/article/details/103297827