I want to store the data returned by $_SERVER["REMOTE_ADDR"]
in PHP into a DB field, pretty simple task, really. The problem is that I can't find any proper information about the maximum length of the textual representation of an IPv6 address, which is what a webserver provides through $_SERVER["REMOTE_ADDR"]
.
I'm not interested in converting the textual representation into the 128 bits the address is usually encoded in, I just want to know how many characters maximum are needed to store any IPv6 address returned by $_SERVER["REMOTE_ADDR"]
.
Best Answer
45 characters.
You might expect an address to be
8 groups of 4 digits with 7
:
between them.But if you have an IPv4-mapped IPv6 address, the last two groups can be written in base 10 separated by
.
, eg.[::ffff:192.168.100.228]
. Written out fully:Note, this is an input/display convention - it's still a 128 bit address and for storage it would probably be best to standardise on the raw colon separated format, i.e.
[0000:0000:0000:0000:0000:ffff:c0a8:64e4]
for the address above.