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 相关文章推荐
建立文件交换功能的脚本(一)
Oct 09 PHP
全文搜索和替换
Oct 09 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
php面向对象重点知识分享
Sep 27 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
容易被忽略的JS脚本特性
2011/09/13 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
工程造价自荐信
2013/10/09 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
爱心活动计划书
2014/04/26 职场文书
心灵点滴观后感
2015/06/02 职场文书
运动员入场词
2015/07/18 职场文书