我想将$_SERVER["REMOTE_ADDR"]PHP 返回的数据存储到数据库字段中,非常简单的任务,真的。问题是我找不到有关IPv6 地址 文本表示 的最大长度的任何适当信息,这是网络服务器通过$_SERVER["REMOTE_ADDR"].
$_SERVER["REMOTE_ADDR"]
我对将文本表示形式转换为地址通常编码的 128 位不感兴趣,我只想知道最多需要多少个字符来存储$_SERVER["REMOTE_ADDR"].
45 个字符 。
您可能希望一个地址是
0000:0000:0000:0000:0000:0000:0000:0000
8 * 4 + 7 = 39
8组4位数,中间7位数:。
:
但是,如果您有一个IPv4 映射的 IPv6 地址,则最后两组可以以 10 为基数写入,由 分隔.,例如。[::ffff:192.168.100.228]. 完整地写出来:
.
[::ffff:192.168.100.228]
0000:0000:0000:0000:0000:ffff:192.168.100.228
(6 * 4 + 5) + 1 + (4 * 3 + 3) = 29 + 1 + 15 = 45
请注意,这是一个输入/显示约定——它仍然是一个 128 位地址,为了存储,最好将原始冒号分隔格式标准化,即[0000:0000:0000:0000:0000:ffff:c0a8:64e4]上面的地址。
[0000:0000:0000:0000:0000:ffff:c0a8:64e4]