-
insérer une adresse IP
Dans mon code, j'insère une adresse IP en bdd : $query = "INSERT INTO visites (ip,timestamp1) VALUES('".$_SERVER['REMOTE_ADDR']."','".time()."')"; la requête affichée est: INSERT INTO visites (ip,timestamp1) VALUES('82.122.12.106','1407655993')
Or le type de la colonne ip est int(11) ; donc les points de l'adresse IP perturbent (et d'ailleurs, le timestamp n'est pas inséré) ; comment régler ça ?
-
Une adresse IP n'est pas un entier, change le type de ta colonne.
-
Si, à la base, l'adresse IP est un entier, c'est sa représentation qui n'en ait pas un.
Il faut que tu recalcule l'entier correspondant : A.B.C.D ==> A*16777216 + B*65536 + C*256 + D
ATTENTION, les calculs doivent se faire sur des entiers 32 bits non signés, sinon, à partir des adresses 128.0.0.0 tu obtiendra un chiffre négatif.
A noter que pour de l'ipv6, si tu veux stocker en int, il faudra passer sur des entier de 128 bits non signés aussi
-
Y'a t'il un avantage/interêt a stocker une ip sous une forme entiere ?
-
Pour moi, comment ça, là, j'en vois pas, si ce n'est qu'elle n'est pas directement lisible par un humain habitué à la forme litérale. Mais il est vrai que certains composants lorsqu'on développe, demandent une ip sous forme d'entier.
-
Pour l'instant, je suis satisfait avec varchar(15).