获取客户端IP
2015-08-22 20:13
295 查看
/** * 获取客户端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'; }
相关文章推荐
- MySQL必知必会(汇总数据, 聚集函数)
- POJ 1995 Raising Modulo Numbers【快速幂】
- 学习笔记 post和get的区别
- poj 1258 最小生成树 prim
- hdu 1017 A Mathematical Curiosity
- hdu1576 A/B
- Java Map接口LinkedHashMap
- socket编程--socket基本概念
- C#值类型与引用类型
- POJ2431 Expedition
- mysql 纸 mysql_fetch_array OR mysql_fetch_assoc OR mysql_fetch_row
- Mysql和SqlServer互相转换
- hdu1014 Uniform Generator
- Socket编程步骤
- UILabel
- BC-52-1001
- poj 2485 最小生成树中的最大边 prim
- c的rand()函数,相同的种子,windows和android下产生的随机数列不一样
- hdu 1027 Ignatius and the Princess II(产生第m大的排列,next_permutation函数)
- Python爬虫学习记录(1)——百度贴吧图片下载