我在 PHP中遇到了$_SERVER [‘REMOTE_ADDR’]的问题
即使服务器使用IPv4,它也会提供类似IPv6的值.

任何人都可以帮我解决这个问题.

然后,服务器接受IPv6套接字上的连接.某些操作系统可以在IPv6套接字上同时执行IPv4和IPv6.当发生这种情况时,IPv6地址看起来像:: ffff:192.0.2.123或:: ffff:c000:027b,它们是相同的地址但用十六进制编写.

如果您看到像2a00:8640:1 :: 224:36ff:feef:1d89这样的IPv6地址,那么您的网络服务器确实可通过IPv6访问:-)

无论如何,要将所有内容转换回规范形式,您可以使用以下内容:

// KNown prefix
$v4mapped_prefix_hex = '00000000000000000000ffff';
$v4mapped_prefix_bin = pack("H*",$v4mapped_prefix_hex);

// Or more readable when using PHP >= 5.4
# $v4mapped_prefix_bin = hex2bin($v4mapped_prefix_hex); 

// Parse
$addr = $_SERVER['REMOTE_ADDR'];
$addr_bin = inet_pton($addr);
if( $addr_bin === FALSE ) {
  // Unparsable? How did they connect?!?
  die('Invalid IP address');
}

// Check prefix
if( substr($addr_bin,strlen($v4mapped_prefix_bin)) == $v4mapped_prefix_bin) {
  // Strip prefix
  $addr_bin = substr($addr_bin,strlen($v4mapped_prefix_bin));
}

// Convert back to printable address in canonical form
$addr = inet_ntop($addr_bin);

使用此代码时,输​​入以下内容之一:

::ffff:192.000.002.123
::ffff:192.0.2.123
0000:0000:0000:0000:0000:ffff:c000:027b
::ffff:c000:027b
::ffff:c000:27b
192.000.002.123
192.0.2.123

你总是得到规范的IPv4地址192.0.2.123作为输出.

当然,IPv6地址作为规范的IPv6地址返回:2a00:8640:0001:0000:0224:36ff:feef:1d89变为2a00:8640:1 :: 224:36ff:feef:1d89等

PHP $_SERVER [‘REMOTE_ADDR’]显示IPv6的更多相关文章

  1. App store拒绝应用程序在iOs 10上支持IPV6网络

    我收到苹果公司的app拒绝邮件,下面是我们在连接到IPv6网络的Wi-Fi上运行iOS10.0.2的iPad和iPhone上查看了应用中的一个或多个错误.具体来说,应用程序在启动时仍保留在启动屏根据他们的要求,我已经在我的Mac上创建了NAT64网络,并为iPhone5S设备10.0.2os版本共享了互联网,App工作正常,但苹果称其不与IPv6合作任何人都可以确认我需要检查其他什么吗?

  2. 需要适用于iOS 9的IPv6组播C代码

    苹果现在要求iOS9应用符合IPv6.我们几乎可以,除了一些发送UDP广播的代码–现在在iOS9中失败了.我看到的一切告诉我,UDP组播是在IPv6中这样做的正确方法.我已经找到一些示例代码,但是在我尝试过的任何版本的iOS或MacOSX上都无效.这个代码是从我们程序中的C/C++lib调用的–很难回调到Swift,Obj-C,Java等.这段代码将由我们的应用程序的MacOSX和Android版本共享.有人会认为可以在任何POSIX环境中的C中进行IPv6组播!

  3. Debian / Ubuntu中的静态IPv6地址广告和IPv6自动配置

    这对于反向DNS和防火墙设置尤其有用.我不想禁用IPv6自动配置,因为我无法控制路由器通告的设置.当然,防止autoconf地址被使用的最简单方法是通过执行以下操作来阻止内核创建它们:请注意,这不需要您重新配置路由器,以便它停止发出前缀的广告.在评论中注意,您谈到/etc/gai.conf,但这不适用.这是glibc的配置文件,而不是内核,它影响目标地址选择,而不是源地址选择.如果你仍然希望有autoconf地址,但你不想让它们被使用,那么请继续阅读…

  4. ubuntu – curl和wget尝试ipv6连接

    在我的专用服务器上,运行全新安装的Ubuntu14.04,curl和wget大约需要10秒才能完成一个简单的请求.并且仅在10秒后它才会真正返回一些东西.所以我决定对此进行操作:在所有这些超时之后,我可以清楚地看到套接字后跟套接字.wget的行为方式相同.更多相关信息:ifconfig没有显示inet6地址.我怎样才能防止这种情况发生?

  5. PHP $_SERVER [‘REMOTE_ADDR’]显示IPv6

    我在PHP中遇到了$_SERVER[‘REMOTE_ADDR’]的问题即使服务器使用IPv4,它也会提供类似IPv6的值.任何人都可以帮我解决这个问题.然后,服务器接受IPv6套接字上的连接.某些操作系统可以在IPv6套接字上同时执行IPv4和IPv6.当发生这种情况时,IPv6地址看起来像::ffff:192.0.2.123或::ffff:c000:027b,它们是相同的地址但用十六进制编写.如

  6. ubuntu – 如何调查一个非常慢的telnet的原因?

    考虑到服务器突然停止工作并且我保持不动,我可以肯定地说这是我的isp故障,或者由于外部攻击,我的机器上可能出现问题,例?这表示IPv6地址配置存在问题.通常,如果根本未配置IPv6,则在尝试连接到任何其他主机时不会尝试IPv6地址.但是,如果实际配置了IPv6,但配置不正确,则会显示您描述的问题.解:您可能必须完全禁用IPv6,或者确保如果配置了IPv6,则正确应用配置.

  7. php – 在MySQL数据库中存储IP地址(IPv4和IPv6)

    好的,现在我知道类似的问题可能已被问过一百万次,但我是一个真正的新手,我真的很感谢你的帮助.基本上,我想将访问者的IP地址存储在MySQL中,以便以后检索和验证.我首先需要知道我需要使用哪种类型的字段来存储IP地址.如果可能的话,我还想让系统与IPv6地址兼容.提前致谢要存储IPv4,您可以使用INTUNSIGNED,而对于IPv6,您需要一个十进制(39,0),要在表中存储ip,您可以使用INE

  8. php – 不同的浏览器,不同的IP?

    我通过在MySQL数据库中保存$_SERVER[‘REMOTE_ADDR’]的值来保存用户的IP地址.问题是,对于Firefox和Chrome,$_SERVER[‘REMOTE_ADDR’]是::1,IE和Opera是127.0.0.1.所以我的问题是IP版本是否依赖浏览器?>我应该在数据库中创建两个字段,一个用于IPv4地址,一个用于IPv6地址;>我应该将所有的IP统一到IPv6吗?在PHP中如何做到这一点?>相当明显的是,您的盒子是启用IPv6的,Firefox/Chrome可以使用IPv6,而IE

  9. centos7.0动态和静态网络地址配置方法

    看看当前的ipipaddr更新一下yumyumupdate安装net-tools:ifconfig、route、arp和netstat等命令行工具yuminstallnet-toolsVMware下有三种网络连接模式birdged(桥接)桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。其实Host-Only网络和N

  10. CentOS 6.x 网卡配置

    1)编辑配置文件,添加修改以下内容#vi/etc/sysconfig/network-scripts/ifcfg-eth0BOOTPROTO=static#启用静态IP地址ONBOOT=yes#开启自动启用网络连接IPADDR=192.168.21.129#设置IP地址NETMASK=255.255.255.0#设置子网掩码GATEWAY=192.168.21.2#设置网关DNS1=8.8.8.8

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部