[PHP/MySQL] $_SERVER['REMOTE_ADDR'] en IPv6

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 17-09 11:07
Naar aanleiding van het XS4ALL nieuwsbericht, was ik me aan het bedenken wat er binnenkomt op de $_SERVER['REMOTE_ADDR'] variabele in PHP. Ik gebruik een database om mijn sessies te managen en vroeg me af wat voor veld(type) ik het best kan gebruiken om IP adressen op te slaan. Natuurlijk met het oog op de toekomst dus ook geschikt voor IPv6 adressen.

Hoe zien deze eruit in $_SERVER['REMOTE_ADDR']..? Gewoon xxx.xx.xxx.... of die meer hexachtige benadering met ::?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:51

Janoz

Moderator Devschuur®

!litemod

Een IPv4 IP is gewoon een 32 bit getal terwijl een IPv6 gewoon een 128 bit waarde is. Je zou het dus het beste op kunnen slaan in een unsigned bigint. Die hex blokjes is enkel een representatie form. Ik heb trouwens geen idee wat php gaat doen. Ik denk niet dat zij een datatype hebben waarin een 128bits getal past.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En dit leverde geen zinnige informatie :? Kortom: Wat heb je zelf al gezocht en gevonden?

Zolang je server alleen op IPv4 luistert kun je sowieso geen IPv6 requests afhandelen dus is er niks aan 't handje. Als je IPv6 gaat draaien op je server komt op $_SERVER['REMOTE_ADDR'] dus ook een IPv6 IP binnen voor een IPv6 request.

[ Voor 57% gewijzigd door RobIII op 27-08-2010 11:10 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 17-09 11:07
Nou ik kon geen sluitende informatie vinden. Ik had het idee dat er hier misschien tweakers zijn die er wel ervaring hebben met deze IP adressen en misschien al goede oplossingen gevonden hadden om het op te slaan in de database.

De servers handelen inderdaad nog geen IPv6 af, maar om te voorkomen dat ik later vanalles moet aanpassen weet ik graag nu al wat me te wachten staat :P

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Bernardo schreef op vrijdag 27 augustus 2010 @ 11:20:
en misschien al goede oplossingen gevonden hadden om het op te slaan in de database.
Een IPv6 IP is 128 bits groot. Afhankelijk van je RDBMS kies je dus het best passende type. In jouw geval, MySQL zou je twee unsigned bigints kunnen gebruiken, VarBinary(16) of gewoon varchar, maar die laatste zou problemen gaan leveren bij sortering e.d. (keep in mind: ik ben niet erg intiem bekend met MySQL dus misschien zijn er nog betere oplossingen).

Kijk eens hier, hier enz. Er is meer dan voldoende te vinden, dus het is me niet duidelijk wat nou je vraag precies is en waar je probleem zit.

[ Voor 35% gewijzigd door RobIII op 27-08-2010 11:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Voor postgresql zie inet.

Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 11:47
MariaDB heeft een ip-type op de planning staan waarin je zowel ipv4 als ipv6 adresse kan opslaan, als die dat heeft is dat in principe ook zo in mysql te patchen. Zij willen hiervoor een binary char(16) veld voor gebruiken.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.

Pagina: 1