PHP获取IPV6地址

深入理解IP地址及其在网络安全中的应用 本文深入探讨了IP地址的工作原理、识别方法及在网络中的应用。首先,解释了IP地址如何帮助服务器定位请求来源,并介绍了IPv4与IPv6地址的不同之处。接着,文章探讨了IP地址的静态与动态特性,以及如何通过脚本获取访问者的IP地址,并讨论了Cloudflare对IP地址获取的影响。最后,文章介绍了如何利用PHP的mail()函数来发送包含IP地址的电子邮件警报。 阅读详情
首先说几个坑:
  • 我们之前获取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.8


REMOTE_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获取用户IPv4或IPv6地址的代码 其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西……无奈JSON获取到的只是本机服务器的IP。算了,不研究了,何况人家提供的widget也挺好用的。谷歌了一下,找到这段代码,可以根据用户环境获取IP地址。 例如IPv6访问 www.shiwo.de 则获取到的是用户的IPv6地址 p.s 前提是网站做了A和AAAA解析 复制代码 代码如下: <?php function getIP() /*获取客户端IP*/ { if (@$_SERVER[“HTTP_X_FORWARDED_FOR”]) $ip = $_SERVER[“HTTP_X_FORWARDE 立即下载

相关推荐

从ADS到HFSS:耦合线带通滤波器的设计与模型转换实战

本文详细介绍了耦合线带通滤波器的完整设计流程,重点阐述了从ADS电路级快速优化到HFSS三维电磁场精确验证的模型转换实战方法。通过对比ADS理想模型仿真与HFSS全波仿真结果,指导读者进行参数校准与迭代优化,并分享了关键的板材选择、加工误差及端口设置等避坑指南,确保设计性能与实物测试高度一致。

weixin_29290863的博客 344

php获取ipv6地址并显示,使用php获取用户IPv4或IPv6地址...-thinkPHP的Html模板标签的使用方...-php读取图片内容输出至浏览器的代码一例_169IT.COM...

应该是输出图片前有输出空格或其他字符造成的,可以检查一下输出图片前有没有其他字符,如果是utf-8编码记得保存为无BOM的文件。代码如下:代码示例:/*** 读取图片并输出至浏览器*author www.*/class imgdata{public $imgsrc;public $imgdata;public $imgform;public function getdir($source){$th...

weixin_34369521的博客 793

告别VLC!用Python+OpenCV实时拉取RTSP监控流,并实现抽帧降低延迟(附完整代码)

本文介绍了一种基于Python和OpenCV的低延迟RTSP监控流处理方案,通过抽帧技术显著降低延迟并保持视频分析准确性。文章详细讲解了RTSP流处理的基础挑战、抽帧技术原理与实现,以及完整的低延迟处理方案,包括硬件加速配置和动态抽帧算法,帮助开发者优化监控视频流处理性能。

weixin_30333885的博客 272

php获取本机ipv6,php获取ip_php获取本机ip

摘要 腾兴网为您分享:php获取本机ip,自动刷宝,中意在线,万豪金业,听中国等软件知识,以及京东me,英语有声读物,293真人秀场,自动更换桌面壁纸,枫叶网,vipjr少儿英语,上和弦,图片裁剪器,居家购物,艺术收藏网,江都人才网,收银小精灵,照相机软件,王者荣耀s8赛季皮肤,玩加赛事等软件it资讯,欢迎关注腾兴网。例子,php获取用户IP地址。 复制代码 代码示例: ?php // 11111...

weixin_34584910的博客 902

从零到一:基于DESeq2的转录组差异表达分析实战指南

本文详细介绍了基于DESeq2的转录组差异表达分析实战指南,涵盖数据准备、标准化处理、差异分析及结果解读等关键步骤。DESeq2凭借其稳定性和对低表达基因的友好处理,成为转录组数据分析的首选工具。文章还提供了常见问题排查和优化建议,帮助研究者高效完成从分析到发表的完整流程。

weixin_26759093的博客 270

2024高教社杯数学建模国赛B题丨国一原创论文解析及源码超详细分享!

继续分享一篇2024国赛B题的国奖论文,包含可运行源代码jupyter,国赛B题通常比较聚焦实际复杂系统的多目标优化决策,主要偏重算法实现与概率建模解决开放性的管理问题。而且高度开放,无标准答案,学科交叉复杂,如资源调度、交通优化、海洋探测等。比较建议有一定统计学基础的同学参加。

ihui永不放弃 6738

php ipv6_在PHP中使用IPv6地址

经过一番彻底的搜索之后,我注意到PHP中缺少处理IPv6]的功能。为了我个人的满意,我创建了一些功能来帮助过渡。该IPv6ToLong()功能是此处提出的临时解决方案:如何在关系数据库中存储IPv6兼容地址。它将IP分成两个整数,并以数组形式返回它们。/*** Convert an IPv4 address to IPv6** @param string IP Address in dot not...

weixin_30047651的博客 1589

【Unity】【Pico】【VR开发】为何PICO打包后真机运行闪退

由于并没有开版权验证,而且闪退后也并没有弹框说版权问题,所以还是怀疑环境有什么地方不对。设置步骤,项目配置都没问题,Build也成功,Unity版本是符合要求的2022LTS版本,但是一在真机上运行就闪退。

每日出拳老爷子的博客 3175

php取远端ipv6,php获取用户IPv4或IPv6地址的代码

其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西……无奈JSON获取到的只是本机服务器的IP。算了,不研究了,何况人家提供的widget也挺好用的。谷歌了一下,找到这段代码,可以根据用户环境获取IP地址。例如IPv6访问 www.shiwo.de 则获取到的是用户的IPv6地址p.s 前提是网站做了A和AAAA解析function getIP() /*获取...

weixin_30441727的博客 605

YOLO模型轻量化实战:剪枝、量化与知识蒸馏三大技术落地详解

这篇文章结合我自己的实战经验,从原理、操作、效果、避坑四个方面,给大家讲清楚了YOLO模型轻量化的三大核心技术:剪枝、量化、知识蒸馏。先明确应用场景,再选择合适的技术组合,不要盲目追求极致压缩,要在“大小、速度、精度”之间找平衡。实战才是最好的学习方式——大家可以先拿自己的数据集试试剪枝和量化,感受一下效果,有问题可以在评论区留言。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 592

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1050

php显示服务器ipv6,php获取用户IPv4或IPv6地址的代码

其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西……无奈JSON获取到的只是本机服务器的IP。算了,不研究了,何况人家提供的widget也挺好用的。谷歌了一下,找到这段代码,可以根据用户环境获取IP地址。例如IPv6访问 www.shiwo.de 则获取到的是用户的IPv6地址p.s 前提是网站做了A和AAAA解析复制代码 代码如下:function ge...

weixin_33816175的博客 1195

matlab 质心重合法实现点云配准【2026最新版】

质心重合法是将源点云和目标点云的质心重合,以此缩小两点云集之间的平移误差,从而为下一步粗配准提供更好的初始位置姿态。

点云侠的博客 509

php获取本机ipv6,树莓派自动解析IPV6地址

自动解析树莓派的 IPV6 地址到某个域名// 调试模式define('DebugModel', false);// 域名define('Domain', 'device.raspberrypi.org');// Clouflare API 地址define('ClouflareApiBase', 'https://api.cloudflare.com/client/v4');// Cloufla...

weixin_39909212的博客 784

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

php获取ipv4地址 而不是ipv6,PHP中有关IPV4 和IPV6地址转换以及其它一些常见问题

这里主要介绍一下 IPV4 / IPV6 在 PHP / MySQL 中如何转换。以及中间容易碰到的一些问题。首先介绍两个函数:ip2long:将 IPV4 的字符串互联网协议转换成长整型数字int ip2long ( string $ip_address )long2ip:将长整型转化为字符串形式带点的互联网标准格式地址(IPV4)string long2ip ( int $proper_add...

weixin_32421297的博客 724

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php取远端ipv6,使用php获取用户IPv4或IPv6地址的代码

从网上找到这段代码,可以根据用户环境获取IP地址,供大家学习参考。其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西,无奈JSON获取到的只是本机服务器的IP。算了,不研究了,何况人家提供的widget也挺好用的。例如:IPv6访问www.jquerycn.cn则获取到的是用户的IPv6地址。(注:前提是网站做了A和AAAA解析)复制代码 代码如下:func...

weixin_39532754的博客 495

php同时获取ipv4及ipv6地址,php获取用户IPv4或IPv6地址的代码

function getIP() /*获取客户端IP*/{if (@$_SERVER["HTTP_X_FORWARDED_FOR"])$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];else if (@$_SERVER["HTTP_CLIENT_IP"])$ip = $_SERVER["HTTP_CLIENT_IP"];else if (@$_SERVER["REMO...

weixin_39952074的博客 765

php获取显示服务器地址,php获取当前服务器的地址

php获取当前服务器的地址 内容精选换一换IPv6的使用,可以有效弥补IPv4网络地址资源有限的问题。如果当前云服务器使用IPv4,那么启用IPv6后,云服务器可在双栈模式下运行,即云服务器可以拥有两个不同版本的IP地址:IPv4地址和IPv6地址,这两个IP地址都可以进行内网/公网访问。按照约束与限制中的网络环境要求创建的云服务器,有些不能动态获取到IPv6地址,需要进行相关配本章节介绍使用PH...

weixin_42537450的博客 560

php如何判断ipv4_PHP如何只获得ipv4的地址

希望根据不同的ip地址段,网站显示不同的内容。目前针对ipv4的地址段做了限制,但是有些客户端访问是通过ipv6的地址访问,做的限制就没有用了。所以我想问一下,有没有可能通过php只获取ipv4的代码。目前使用的php获取ip的代码如下:function check_ip($str){return preg_match('/""A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4...

weixin_33970994的博客 237

PHP IPv6工具

PHP IPv6工具(v6tools)是一个小型库,提供IPv6地址,子网和EUI64的验证。 &lt;?php require('v6tools/autoload.php'); if (!v6tools\Runtime::isIPv6Supported()) { fprintf(STDERR, "No ipv6 support"); exit(-1); } $ip = n...

taotaobaobei的博客 214

JavaScript跨域获得用户的IPv6地址

首先,要消除一个误区,就是用户在浏览器中输入一个URL,只能通过IPv4或者IPv6一种方式访问。     而我想做的,就是让用户访问我的IPv4的域名的时候,同时显示出用户的IPv4和IPv6的地址。方法是在首页中加一段JavaScript代码,用户浏览器执行这段JS代码,访问我的IPv6的域名。      注意: IPv4和IPv6的服务器可以在同一个机子的Apache中跑着!    

zhx1259135417的专栏 1792

php读取ipv4,PHP如何只获得ipv4的地址

PHP如何只获得ipv4的地址PHPzhong2017-04-10 17:00:22 0 1 149希望根据不同的ip地址段,网站显示不同的内容。目前针对ipv4的地址段做了限制,但是有些客户端访问是通过ipv6的地址访问,做的限制就没有用了。所以我想问一下,有没有可能通过php只获取ipv4的代码。目前使用的php获取ip的代码如下:function check_ip($str){ret...

weixin_42493720的博客 823
上一篇: tkinter多线程的应用(临时版).py
下一篇: Laravel Call to undefined method Closure::__set_state ()
o王o
博客等级 码龄13年 32粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值