507

$_SERVER["REMOTE_ADDR"]PHPで返されたデータをDBフィールドに保存したいのですが、これは非常に単純な作業です。問題は、IPv6アドレスのテキスト表現の最大長に関する適切な情報が見つからないことです。これは、Webサーバーがを介して提供するもの$_SERVER["REMOTE_ADDR"]です。

テキスト表現をアドレスが通常エンコードされる128ビットに変換することに興味はありません。によって返されるIPv6アドレスを格納するために必要な最大文字数を知りたいだけです$_SERVER["REMOTE_ADDR"]

4

6 に答える 6

712

45文字

あなたはアドレスがであると期待するかもしれません

0000:0000:0000:0000:0000:0000:0000:0000

8 * 4 + 7 = 39

4桁の8つのグループと:その間に7つ。

ただし、IPv4にマップされたIPv6アドレス.がある場合、最後の2つのグループは、たとえば、で区切られた10進数で書き込むことができます。[::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]上記のアドレスで標準化するのがおそらく最善です。

于 2008-10-03T09:59:21.637 に答える
13

私自身の質問に答えました:

IPv6アドレスは通常、4桁の16進数の8つのグループとして記述され、各グループはコロン(:)で区切られます。

つまり、最大39文字です。

于 2008-10-03T09:56:32.970 に答える