zoukankan      html  css  js  c++  java
  • 获取客户端IP

    	/**
    	 * 获取客户端IP地址
    	 *
    	 * @return string
    	 */
    	public static function getClientIp()
    	{
    		if (!empty($_SERVER["HTTP_CLIENT_IP"]))
    			return $_SERVER["HTTP_CLIENT_IP"];
    
    		if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
    			$proxy_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    		elseif (($tmp_ip = getenv("HTTP_X_FORWARDED_FOR")))
    			$proxy_ip = $tmp_ip;
    		else
    			$proxy_ip = '';
    		
    		if ('' !== $proxy_ip)
    		{
    			if (false === strpos($proxy_ip, ','))
    				return $proxy_ip;
    			
    			foreach (explode(',', $proxy_ip) as $curr_ip)
    			{// 处理可能有多级代理的情况
    				if (false === stripos($curr_ip, 'unknown'))
    					$curr_ip = ltrim($curr_ip);
    				else
    					continue;
    				
    				if (0 === strpos($curr_ip, '192.168.'))
    					continue;	// 内网IP
    				if (0 === strpos($curr_ip, '10.'))
    					continue;	// 内网IP
    				if (0 === strpos($curr_ip, '172.16.'))
    					continue;	// 内网IP
    				
    				return $curr_ip;
    			}
    		}
    
    		if(!empty($_SERVER["REMOTE_ADDR"]))
    			return $_SERVER["REMOTE_ADDR"];
    		elseif(($retvl = getenv("HTTP_CLIENT_IP")))
    			return $retvl;
    		elseif(($retvl = getenv("REMOTE_ADDR")))
    			return $retvl;
    		else
    			return '0.0.0.0';
    	}
    

      

  • 相关阅读:
    python第三天
    python第二天
    python第一天
    Linux之VIM常用功能
    Linux输入输出管理
    Linux文件操作及管理
    Linux虚拟机基本操作
    JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈
    mysql优化limit
    MySql五大引擎的区别以及优劣之分
  • 原文地址:https://www.cnblogs.com/yhl664123701/p/4750971.html
Copyright © 2011-2022 走看看