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设计模式 Builder(建造者模式)
Jun 26 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
PHP两种快速排序算法实例
Feb 15 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
php的无刷新操作实现方法分析
Feb 28 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
php session和cookie使用说明
2010/04/07 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
javascript学习网址备忘
2007/05/29 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python简单实现enum功能的方法
2016/04/25 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
python语言的优势是什么
2020/06/17 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
跟单文员岗位职责
2014/01/03 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
开幕式邀请函
2015/01/31 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技