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 相关文章推荐
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
php similar_text()函数的定义和用法
May 12 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
php数组和链表的区别总结
Sep 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
解析php中static,const与define的使用区别
2013/06/18 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python实现简单成绩录入系统
2019/09/19 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
幼儿教师寄语集锦
2014/04/03 职场文书
博士生求职信
2014/07/06 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
工程催款通知书
2015/04/17 职场文书
学校标语口号大全
2015/12/26 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Django程序的优化技巧
2021/04/29 Python
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL