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 无限极分类
Mar 27 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP防止跨域提交表单
Nov 01 PHP
php过滤敏感词的示例
Mar 31 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
php include类文件超时问题处理
Feb 06 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 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
15种PHP Encoder的比较
2007/03/06 PHP
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP的PSR规范中文版
2013/09/28 PHP
destoon各类调用汇总
2014/06/20 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
php面向对象值单例模式
2016/05/03 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
解决python opencv无法显示图片的问题
2018/10/28 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
出纳岗位职责模板
2013/11/27 职场文书
单位接收函格式
2015/01/30 职场文书
单位更名证明
2015/06/18 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript