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];
            }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章