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设计模式 Visitor 访问者模式
Jun 28 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
php获取域名的google收录示例
Mar 24 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP strripos函数用法总结
Feb 11 PHP
PHP7 其他语言层面的修改
Mar 09 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动态创建Web站点的方法
2011/08/14 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
浅谈php和.net的区别
2014/09/28 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
python getopt 参数处理小示例
2009/06/09 Python
Python中使用中文的方法
2011/02/19 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
python中return不返回值的问题解析
2020/07/22 Python
Solaris操作系统的线程机制
2015/07/28 面试题
大学生优秀团员事迹材料
2014/01/30 职场文书
监察建议书格式
2014/05/19 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
办公经费申请报告
2015/05/15 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
k-means & DBSCAN 总结
2021/04/27 Python