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学习之PHP表达式
Oct 09 PHP
杏林同学录(七)
Oct 09 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
php树型类实例
Dec 05 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
PHP获取访问设备信息的方法示例
Feb 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
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
javascript中的new使用
2010/03/20 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
vue debug 二种方法
2018/09/16 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python3计算三角形的面积代码
2017/12/18 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python可视化实现代码
2019/01/15 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
python实现电子词典
2020/03/03 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
css3中transition属性详解
2014/09/02 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
心理健康教育制度
2014/01/27 职场文书
个人培训自我鉴定
2014/03/28 职场文书
文明寝室标语
2014/06/13 职场文书
聘用意向书
2014/07/29 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
初中成绩单评语
2014/12/29 职场文书
公司感谢信范文
2015/01/22 职场文书
财政局个人年终总结
2015/03/03 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS