Maximale Länge der textuellen Darstellung einer IPv6-Adresse?
Ich die Daten speichern möchten zurückgegeben $_SERVER["REMOTE_ADDR"]
in PHP in ein DB-Feld, ziemlich einfache Aufgabe, wirklich. Das problem ist, dass ich finde keine richtigen Informationen über die maximale Länge der textliche Darstellung einer IPv6-Adresse, die ist, was ein webserver bietet durch $_SERVER["REMOTE_ADDR"]
.
Ich bin nicht interessiert bei der Umwandlung von der textuellen Darstellung in die 128 bit der Adresse ist in der Regel codiert, ich möchte nur wissen, wie viele Zeichen maximal benötigt werden, zu speichern, IPv6-Adresse, die zurückgegeben $_SERVER["REMOTE_ADDR"]
.
InformationsquelleAutor der Frage Gilles | 2008-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leicht falsche, naive Möglichkeit wäre:
8 Gruppen von 4 Ziffern mit 7 ':' zwischen Ihnen.
Aber zu berücksichtigen, die IPv4-mapped-IPv6-Adressen-Funktion, zB.
[::ffff:192.168.0.1]
geschrieben vollständig:Beachten Sie, dies ist eine Eingabe/Anzeige-Konvention - die Datenmenge ist die gleiche und für die Lagerung wahrscheinlich ist es am besten zu standardisieren, die auf die raw-Doppelpunkt-getrennt-format, dh.
[0000:0000:0000:0000:ffff:7fa8:0001]
für die oben genannte Adresse.InformationsquelleAutor der Antwort Matthew Scharley
Unter Linux, siehe Konstante
INET6_ADDRSTRLEN
(gehören<arpa/inet.h>
finden Sieman inet_ntop
). Auf meinem system (header "in.h"):Das Letzte Zeichen für die abschließende NULL, denn ich glaub, so dass die max Länge ist 45, als andere Antworten.
InformationsquelleAutor der Antwort Yury
Meine Frage selbst beantwortet:
So, dass die 39 Zeichen, max.
InformationsquelleAutor der Antwort Gilles
Ich denke, @Deepak Antwort in diesem link ist mehr in der Nähe die richtige Antwort. Max Länge für client-ip-Adresse. So wird die richtige Größe ist 45, nicht 39. Manchmal versuchen wir schnorren in den Bereichen Größe, aber es scheint besser, wenn wir uns vorbereiten, genügend Speicher Größe.
InformationsquelleAutor der Antwort QMaster
Als angegeben ein standard-ipv6-Adresse bei den meisten 45 chars, aber eine ipv6-Adresse kann auch ein Ende %, gefolgt von einem "Bereich" oder "zone" Zeichenfolge, die hat keine Feste Länge, sondern ist in der Regel eine kleine positive ganze Zahl oder ein Netzwerk-interface-Namen, die so in der Realität auch größer als 45 Zeichen. Netzwerk-interface-Namen sind typischerweise "eth0", "eth1", "wlan0", so die Wahl 50 das limit ist wahrscheinlich gut genug.
InformationsquelleAutor der Antwort Sean F
Watch out für bestimmte Kopfzeilen wie
HTTP_X_FORWARDED_FOR
erscheinen, enthalten eine einzelne IP-Adresse. Sie kann tatsächlich enthalten mehrere Adressen (eine Kette von proxies, nehme ich an).Werden Sie zu sein scheinen durch Komma getrennt - und kann eine Menge mehr als 45 Zeichen insgesamt - so überprüfen Sie Sie vor dem speichern in der DB.
InformationsquelleAutor der Antwort Simon_Weaver