PHP获取客户端及服务器端IP的封装类


Posted in PHP onJuly 21, 2016

本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下:

客户端IP相关的变量:

1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。

2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。

3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。

服务器端IP相关的变量:

1. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。

2. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。

类如下:

class getIP{
 function clientIP(){
 $cIP = getenv('REMOTE_ADDR');
 $cIP1 = getenv('HTTP_X_FORWARDED_FOR');
 $cIP2 = getenv('HTTP_CLIENT_IP');
 $cIP1 ? $cIP = $cIP1 : null;
 $cIP2 ? $cIP = $cIP2 : null;
 return $cIP;
 }
 function serverIP(){
 return gethostbyname($_SERVER["SERVER_NAME"]);
 }
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
PHP判断是否有Get参数的方法
May 05 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 #PHP
PHP获取当前文件的父目录方法汇总
Jul 21 #PHP
功能强大的php分页函数
Jul 20 #PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 #PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 #PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 #PHP
无需数据库在线投票调查php代码
Jul 20 #PHP
You might like
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
理解python正则表达式
2016/01/15 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
《山谷中的谜底》教学反思
2014/04/26 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript