php程序员的笔记

  • 网站首页
  • PHP笔记
    • 字符串处理
    • php函数总结
    • 正则表达式
    • 模板框架使用
    • 我的网站模板笔记
    • Ecshop二次开发笔记
    • php源码下载
  • 数据库教程
    • MySQL数据库
    • MongoDB
    • Access数据库
    • Redis
  • JavaScript教程
    • Jquery基础
    • Jquery特效
    • JS常用函数
    • 开源插件开发
    • 谷歌地图开发
  • HTML教程
    • DIV+CSS技术篇
    • 网站优化笔记
    • HTML5 技术
  • 操作系统技巧
    • windows 7系统篇
    • Linux操作系统篇
    • 服务器
  • 互联网资讯
    • 生活杂侃
php程序员的笔记 -> PHP笔记 -> php函数总结 -> php获取客户端真实ip地址的三种方法

php获取客户端真实ip地址的三种方法

php获取用户(客户端)真实IP地址的两种方法

第一种方法,还算靠谱,本人以前一直用的是这个方法:

function get_real_ip(){ 
	$ip=false; 
	if(!empty($_SERVER['HTTP_CLIENT_IP'])){ 
		$ip=$_SERVER['HTTP_CLIENT_IP']; 
	}
	if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
		$ips=explode (', ', $_SERVER['HTTP_X_FORWARDED_FOR']); 
		if($ip){ array_unshift($ips, $ip); $ip=FALSE; }
		for ($i=0; $i < count($ips); $i++){
			if(!eregi ('^(10│172.16│192.168).', $ips[$i])){
				$ip=$ips[$i];
				break;
			}
		}
	}
	return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); 
}

第二种方法:

function get_real_ip(){
    static $realip;
    if(isset($_SERVER)){
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
            $realip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }else if(isset($_SERVER['HTTP_CLIENT_IP'])){
            $realip=$_SERVER['HTTP_CLIENT_IP'];
        }else{
            $realip=$_SERVER['REMOTE_ADDR'];
        }
    }else{
        if(getenv('HTTP_X_FORWARDED_FOR')){
            $realip=getenv('HTTP_X_FORWARDED_FOR');
        }else if(getenv('HTTP_CLIENT_IP')){
            $realip=getenv('HTTP_CLIENT_IP');
        }else{
            $realip=getenv('REMOTE_ADDR');
        }
    }
    return $realip;
}

第三种方法,摘自DISCUZ,应该还不错吧!

// 获取IP地址(摘自discuz)
function getIp(){
	$ip='未知IP';
	if(!empty($_SERVER['HTTP_CLIENT_IP'])){
		return is_ip($_SERVER['HTTP_CLIENT_IP'])?$_SERVER['HTTP_CLIENT_IP']:$ip;
	}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
		return is_ip($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$ip;
	}else{
		return is_ip($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:$ip;
	}
}
function is_ip($str){
	$ip=explode('.',$str);
	for($i=0;$i<count($ip);$i++){  
		if($ip[$i]>255){  
			return false;  
		}  
	}  
	return preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/',$str);  
}

您可能感兴趣的文章

  • php获取客户端电脑屏幕宽度,高度,分辨率的方法
  • php将IP地址转换为真实地址的方法
  • js获取客户端mac地址的方法
  • PHP获取当前用户真实IP的方法
  • php window平台模拟checkdnsrr函数检测email是否真实存在
  • PHP在引号前面添加反斜杠的原因及PHP去除反斜杠的办法,三种办法关闭php魔术引号
  • PHP判断上传文件类型最安全,最真实的解决办法
  • php ignore_user_abort() 函数设置与客户机断开脚本继续执行
转载请注明出处:php程序员的笔记
本文永久地址:http://www.phpernote.com/php-function/322.html
发布时间:2012 年 06 月 13 日 16 时 14 分 31 秒     文章来源:-わ千与千寻
上一篇:php常用函数收集并附解释说明
下一篇:PHP 生成连续的数字(字母)数组函数range()分析,PHP抽奖程序函数
热门文章
  • PHP获取当前时间、时间戳方法大总结
  • php获取远程图片并下载保存到本地
  • php优化压缩的图片
  • php提取字符串中的数字
  • php购物车类
  • PHP判断浏览器类型
随机文章
  • php如何知道一个类共有多少方法(包括继承的)
  • php判断json格式是否正确和是否为json格式的方法
  • It is not safe to rely on the system's timezone settings....的解决办法
  • php const和define的区别(php类中如何定义常量)
  • php返回json数据中文显示不友好的问题的解决办法
  • thinkphp更新数据库的五种方法
  • 周热门文章
    • php判断变量类型常用方法
    • php二维数组去掉重复值的方法总结
    • php获取客户端真实ip地址的三种方法
    • PHP获取当前服务器详细信息
    • php在数组中查找某个值是否存在(in_array(),array_search(),array_key_exists())
    • php模拟发送get请求
    • php提示Maximum execution time of 30 seconds exceeded...错误的解决办法
    • php解析url (parse_url) 参数成数组 (parse_str)
    • php获取本周和上周的开始日期和结束日期
    • PHP的Try, throw 和 catch简单用法

All rights reserved. Design by -わ千与千寻.  京ICP备16025782号-1网站地图  友情连接有话要说私人建站招募投稿  广告服务  互联网工具大全