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&amp;java(三)
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
PHP 危险函数全解析
Sep 09 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
PHP内存溢出优化代码详解
Feb 26 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输出时间格式
2013/08/31 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
jQuery事件对象总结
2016/10/17 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
Python re模块介绍
2014/11/30 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
python 瀑布线指标编写实例
2020/06/03 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
主治医师岗位职责
2013/12/10 职场文书
自荐信写法介绍
2014/01/25 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
法律六进活动方案
2014/03/13 职场文书
我的长生果教学反思
2014/04/28 职场文书