我需要检查IP地址是IPv4还是IPv6,以便相应地操作IP地址。检查IP地址类型,IPv4或IPv6
这可以通过一些简单的实现,说
<cfset ip = "2a01:bc80:1::">
<cfif ip does not contain ":">
<cfset ipV="IPv4">
<cfelse>
<cfset ipV="IPv6">
但在另一方面,不认为这是解决这个问题的办法万无一失。 我也尝试用正则表达式重写php例子,但无法将其整理出来。
<cfset ip = "24.225.236.0">
<cfset checkIp = ReMatch("^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", trim(ip))>
<cfif checkIp neq 0>
<cfset ipV="IPv4">
<cfelse>
<cfset ipV="IPv6">
</cfif>
<cfdump var="#ipV#">
什么是最好的,万无一失的方式来处理ip版本检查?
为什么检查并非万无一失冒号?如果你知道你有一个IP地址,这似乎很好?你有没有冒号的IPv6地址? –
我将使用CGI.REMOTE_ADDR来获取用户的IP,因此每次都应该将正确的IP传递给代码。也许我应该添加一些代码来检查IP是否有效!? – user2595617
我认为IPv6总是至少有一个: – user2595617