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计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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汉字转换拼音的类
2013/06/18 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
socket + select 完成伪并发操作的实例
2017/08/15 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
汽修专业学生自我鉴定
2013/11/16 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
总经理检讨书范文
2015/02/16 职场文书
质量保证书格式模板
2015/02/27 职场文书