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模拟HTTP认证
Oct 09 PHP
一个php作的文本留言本的例子(一)
Oct 09 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php实现每日签到功能
Nov 29 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知道与问问的采集插件代码
2010/10/12 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python中print和return的作用及区别解析
2019/05/05 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python算的上脚本语言吗
2020/06/22 Python
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
如何强制垃圾回收
2015/10/06 面试题
初二政治教学反思
2014/01/12 职场文书
村委会主任先进事迹
2014/01/15 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
物业管理专业自荐信
2014/07/01 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
Python数据类型最全知识总结
2021/05/31 Python