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
基于文本的留言簿
Oct 09 PHP
用文本文件制作留言板提示(下)
Oct 09 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php eval函数一句话木马代码
May 21 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
php生成word并下载代码实例
Mar 15 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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生成zip压缩文件的方法详解
2013/06/09 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
javascript json2 使用方法
2010/03/16 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
python字符串连接方式汇总
2014/08/21 Python
python多线程操作实例
2014/11/21 Python
python处理html转义字符的方法详解
2016/07/01 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
医学院学生的自我评价分享
2013/11/19 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2016年教师节感言
2015/12/09 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书