首先说几个坑:

  • 我们之前获取IP的方式
    private static function clientIp(){return getenv('HTTP_CLIENT_IP')?:getenv('HTTP_X_FORWARDED_FOR')?:getenv('HTTP_X_FORWARDED')?:getenv('HTTP_FORWARDED_FOR')?:getenv('HTTP_FORWARDED')?:getenv('REMOTE_ADDR');}
现在修改为:private static function clientIp(){return getenv('REMOTE_ADDR')?:getenv('HTTP_CLIENT_IP')?:getenv('HTTP_X_FORWARDED_FOR')?:getenv('HTTP_X_FORWARDED')?:getenv('HTTP_FORWARDED_FOR')?:getenv('HTTP_FORWARDED');}

坑一:HTTP_CLIENT_IP 是代理服务器发送的HTTP头.可以随意伪造!

$_SERVER['HTTP_CLIENT_IP']
HTTP_CLIENT_IP 是代理服务器发送的HTTP头.可以随意伪造!eg:
curl -H 'client-ip: 8.8.8.8'  http://api.local.com/index.php
通过getenv('HTTP_CLIENT_IP') 获取到IP 8.8.8.8REMOTE_ADDR不可以显式的伪造,虽然可以通过代理将ip地址隐藏,但是这个地址仍然具有参考价值,因为它就是与你的服务器实际连接的ip地址。
坑二:关于IPV4和IPV6
对于服务端来说,可以有IPV4的地址和IPV6的地址。
当客户端连接服务端时,只能使用一种协议去向服务端请求,不会同时使用IPV4和IPV6。当使用IPV4访问时,获取到IPV4的地址,如果使用IPV6访问时获取到IPV6的地址。
如果要使用IPV4地址,必须在服务端DNS上禁用IPV6支持,这样所有客户端必须使用IPV4作为唯一可用的协议。

参考:https://stackoverflow.com/questions/51245053/how-can-i-get-both-ipv4-and-ipv6-address-using-php-code

坑三验证是IPV4还是IPV6

很多人用strpos( $ip , ":")用来确定是否识别出IPv6地址或substr_count( $ip , ".") == 3验证IPv4地址。
但是不是100%准确;例如  ::127.0.0.1或的地址::ffff:10.10.1.1可以使用:
if( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ){// Yes it's valid IPv4
}
if( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ){// Yes it's valid IPv6
}

IPV6转换。。。。后面再研究这个……如果想存数据库,至少用varchar(30)来存储

https://www.mikemackintosh.com/5-tips-for-working-with-ipv6-in-php/#comment-12521
inet_pton和inet_pton
dtr_pton  dtr_ntop

查询服务端是否支持IPV6 ,过审苹果的包也要求有ipv6地址的哦~

方法一:http://ipv6-test.com/validate.php
http://www.test-ipv6.com/方法二:windows 下执行: nslookup www.baidu.com    2001开头的是IPv6, 218开头的是IPv4
在mac上执行: dig +nocmd + nostats![在这里插入图片描述](https://img-blog.csdnimg.cn/20190221210250233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTIxMjk2MDc=,size_16,color_FFFFFF,t_70)
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28706
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0检验方式:
Got answer  有个status:NO ERROR ,一般status是no error 就没问题。
有错的话对应下面的表:

附一张我本地测试图:

PHP获取IPV6地址相关推荐

  1. ar路由器 pppoe下发ipv6 dns_移动宽带如何获取IPV6地址

    都2020年了,为啥我家还没有IPV6!!! 事实上现今许多网络服务提供商(ISP)都提供了IPV6地址,你手机连上移动.联通.电信的基站,都能获取到一个IPV6地址,没道理宽带不给提供啊. 其实啊, ...

  2. 比较ipv6有状态与无状态地址分配工作特点_IPv6环境获取IPV6地址,无状态地址分配,一分钟了解下...

    一.DHCPv6基础 DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持 IPv6 的动态主机配置协议)是针 对 IPv6 编址方案设计的,为 ...

  3. ipv6地址_「案例」路由器怎么自动获取IPv6地址?

    拓扑 规格 适用于V200R002C00及以上版本.所有形态的AR路由器. 组网需求 PC直连Router的接口后可通过协议自动获取IPv6地址,并自动生成默认网关,从而使PC与路由器可以自动连通.具 ...

  4. C语言如何获取ipv6地址

    使用通常获取ipv4的IP地址的方法是无法获取ipv6地址的,本文介绍了使用C语言获取ipv6地址的三种方法:从proc文件从系统获取ipv6地址.使用getifaddrs()函数获取ipv6地址和使 ...

  5. 【案例】路由器怎么自动获取IPv6地址?

    拓扑 规格 适用于V200R002C00及以上版本.所有形态的AR路由器. 组网需求 PC直连Router的接口后可通过协议自动获取IPv6地址,并自动生成默认网关,从而使PC与路由器可以自动连通.具 ...

  6. Redmi AC2100上使用Hiboy Padavan固件进行子网IPv6分配,Padavan子网无法获取IPv6地址

    1.基础设置 默认情况下Padavan连接到光猫以后,会自动获取并为默认eth3分配WAN口的IP地址,支持IPv6的光猫会获取IPv6地址给WAN口,但是不会继续对LAN中子网设备进行IPv6地址的 ...

  7. win10系统ipv6服务器地址,教你Win10系统重新获取IPV6地址的方法

    Win10系统如何重新获取IPV6地址?随着IPV4地址的枯竭,IPV6地址是未来的方向.现在已经有很多网络环境中在使用IPV6地址.最近发现Win10有的时候能获得IPV6的地址,有的时候无法获得I ...

  8. 高通SDX12:小网SIM卡QMI拨号无法获取IPv6地址问题的分析

    背景 客户反馈设备插小网卡驻网并加载qmi_wwan驱动后,使用多路拨号工具进行两路拨号,第一路无法获取IPv6地址,但是插现网卡测试是没有问题的.具体测试方法如下图: Check后只有第二路有PDN ...

  9. 如何通过c语言获取ipv6邻居表,急求在vc++6.0中获取IPV6地址的方法,高手请进,谢谢!!...

    本人最近getaddrinfo函数获取本机IP地址,本机的IPV4地址能正确获得,但本机IPV6地址只能获得环路地址,即::1.为什么不能获得IPV6的Global地址或链路本地地址.恳请指点,不胜感 ...

最新文章

  1. 憋个大招!一起“干完”这份300页1000道面试题
  2. 第三次作业:阅读《构建之法》1-5章有感
  3. 《那些年啊,那些事——一个程序员的奋斗史》——39
  4. string stringbuffer stringbuilder 区别
  5. 100以内素数之和python123_python质数,水仙花数,简单猜拳游戏等
  6. Dynamics 365中的应用程序介绍
  7. Python基础__Python序列基本类型及其操作(1)
  8. win2003 server重启故障
  9. dubbo调用service后返回对象null_dubbo-go 白话文 | go 和 java 互通有无
  10. sigmoid函数_深度学习中激活函数总结
  11. Windows服务器nginx多个二级域名部署ssl证书超详细步骤(https)
  12. Linux入门:PuTTY实现Linux和Windows文件互传
  13. 【目标检测】SSD中的hard negative mining
  14. Quartz 触发器、过期触发策略 、排它日历、数据持久化
  15. 个人总结 超详细 windows10下载与安装
  16. jep java_jep-java-3.4-trial java表达式分析器 - 下载 - 搜珍网
  17. python汉化包放哪_python 汉化
  18. 跨考计算机日程记录01
  19. 怎么使excel表只显示一部分分页内容
  20. 基于CUDA的GPU并行计算技术实现网课课表编排

热门文章

  1. 机器阅读理解SQuAD数据集结构简化表示
  2. 北京建筑大学计算机科学,北京这三所理工类高校虽不是211,但实力也很强劲,可惜不够出名...
  3. typora 浏览器预览_今日软件 | 造画、夸克浏览器、完美解码、Process Lasso、第三方微博客户端、专业矢量图/图像编辑工具...
  4. CSS基本知识点整理(一)
  5. 牛客暑假训练营7-xay loves or
  6. 课堂练习4-C语言多分支结构
  7. Web自动化测试:模拟键盘事件(Keys)
  8. apple深度学习开发包Metal
  9. 808操作系统 文件管理
  10. 《设计模式之禅》之六大设计原则