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 相关文章推荐
MySQL GBK→UTF-8编码转换
May 24 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
请离开include_once和require_once
Jul 18 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 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获取url的函数代码
2011/08/02 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js 编程笔记 无名函数
2011/06/28 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
canvas绘制多边形
2017/02/24 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
Python 查看文件的编码格式方法
2017/12/21 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
详解python中的模块及包导入
2019/08/30 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
python 如何引入协程和原理分析
2020/11/30 Python
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
护理专业毕业生推荐信
2013/10/31 职场文书
电子商务应届生求职信
2013/11/16 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
银行贷款承诺书
2014/03/29 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
离婚案件被告代理词
2015/05/23 职场文书