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 相关文章推荐
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
php下将XML转换为数组
Jan 01 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
Feb 09 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
一个简单的PHP验证码实现代码
May 10 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
php微信公众号开发之图片回复
Oct 20 PHP
php 多继承的几种常见实现方法示例
Nov 18 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-fpm的配置详解
2013/06/03 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
简单的Python2.7编程初学经验总结
2015/04/01 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
python类中super() 的使用解析
2019/12/19 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
python中常见错误及解决方法
2020/06/21 Python
基于python实现坦克大战游戏
2020/10/27 Python
Python常用外部指令执行代码实例
2020/11/05 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
英文版餐饮业求职信
2013/10/18 职场文书
个人查摆剖析材料
2014/02/04 职场文书
会计毕业生自荐书
2014/06/12 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技