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中文件上传的安全问题
Oct 09 PHP
检测png图片是否完整的php代码
Sep 06 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
PHP类的反射用法实例
Nov 03 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 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 socket通信简单实现
2016/11/18 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
使用Python更换外网IP的方法
2018/07/09 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
责任心演讲稿
2014/05/14 职场文书
团结演讲稿范文
2014/05/23 职场文书
保险专业求职信
2014/07/07 职场文书
社区班子对照检查材料
2014/08/27 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
假期安全教育广播稿
2014/10/04 职场文书
实习协议书
2015/01/27 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
网吧管理制度范本
2015/08/05 职场文书