php 获取客户端的真实ip


Posted in PHP onNovember 30, 2009
function GetIP(){ 
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
$ip = getenv("REMOTE_ADDR"); 
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
$ip = $_SERVER['REMOTE_ADDR']; 
else 
$ip = "unknown"; 
return($ip); 
}

regist=off的问题
if ($register_globals!=1) {
@extract($_SERVER, EXTR_SKIP);
@extract($_COOKIE, EXTR_SKIP);
@extract($_SESSION, EXTR_SKIP);
@extract($_POST, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP);
}
其中REMOTE_ADDR比较好理解,php手册上有说明它是预定的变量;而HTTP_x_FORWARDED_FOR呢,在网上找了一些资料,是这么说的
在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。
不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

至于HTTP_CLIENT_IP,有篇贴子上说
'HTTP_CLIENT_IP'是用户的IP,'HTTP_X_FORWARDED_FOR'是代理的IP
这些IP头消息未必能够取得到(因为不同的浏览器不同的网络设备,可能发不同的IP头消息).所以PHP就尝试把每个IP头消息判断一下,若有,则取其中的一个.

PHP 相关文章推荐
php.ini中文版
Oct 09 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
php中bind_param()函数用法分析
Mar 28 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 #PHP
php中$this->含义分析
Nov 29 #PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 #PHP
Ajax+PHP 边学边练之四 表单
Nov 27 #PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 #PHP
完美解决PHP中文乱码
Nov 26 #PHP
php google或baidu分页代码
Nov 26 #PHP
You might like
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
jQuery 操作XML入门
2008/12/25 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
pytorch中的inference使用实例
2020/02/20 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
医院门卫岗位职责
2013/12/30 职场文书
个人授权委托书范本
2014/04/03 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL