PHP 获取客户端 IP 地址的方法实例代码


Posted in PHP onNovember 11, 2018

先来了解一个变量的含义:

$_SERVER['REMOTE_ADDR']:浏览当前页面的用户计算机的ip地址

$_SERVER['HTTP_CLIENT_IP']:客户端的ip

$_SERVER['HTTP_X_FORWARDED_FOR']:浏览当前页面的用户计算机的网关

$_SERVER['HTTP_X_REAL_IP']:nginx 代理模式下,获取客户端真实IP

/**
 * 获取客户端IP地址
 */
function real_ip()
{
  $ip = $_SERVER['REMOTE_ADDR'];
  if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
    foreach ($matches[0] AS $xip) {
      if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
        $ip = $xip;
        break;
      }
    }
  } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CF_CONNECTING_IP'])) {
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
  } elseif (isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_IP'])) {
    $ip = $_SERVER['HTTP_X_REAL_IP'];
  }
  return $ip;
}

总结

以上所述是小编给大家介绍的PHP 获取客户端 IP 地址的方法实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

PHP 相关文章推荐
PHP parse_url 一个好用的函数
Oct 03 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
Jun 06 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
php生成shtml类用法实例
Dec 09 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
Yii redis集合的基本使用教程
Jun 14 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 #PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 #PHP
safari下载文件自动加了html后缀问题
Nov 09 #PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 #PHP
PHP校验15位和18位身份证号的类封装
Nov 07 #PHP
php中如何执行linux命令详解
Nov 06 #PHP
laravel中的一些简单实用功能
Nov 03 #PHP
You might like
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
公司的力量观后感
2015/06/05 职场文书