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抓即时股票信息
Oct 09 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
php变量作用域的深入解析
Jun 03 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
PHP生成器简单实例
May 13 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 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中Object对象的笔记分享
2011/06/28 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
python+selenium开发环境搭建图文教程
2017/08/11 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
公司节能减排方案
2014/05/16 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
文艺晚会开场白
2015/05/29 职场文书
文明礼仪主题班会
2015/08/13 职场文书
七夕情人节问候语
2015/11/11 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python