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程序中防止盗链
Apr 09 PHP
php explode函数实例代码
Feb 27 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
分享一则PHP定义函数代码
Feb 26 PHP
分享10段PHP常用代码
Nov 11 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
python web框架学习笔记
2016/05/03 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python中Selenium模块的使用详解
2020/10/09 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
入党转预备思想汇报
2014/01/07 职场文书
周年庆典主持词
2014/04/02 职场文书
离职报告格式
2014/11/04 职场文书
环卫个人总结
2015/03/03 职场文书
公司市场部岗位职责
2015/04/15 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript