我需要檢查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