Définir une adresse IP
L'adresse IP permet d'identifier chaque matériel informatique connecté à un réseau. Dans la version IPv4, le format est une suite de 4 numéros séparée dans des points (exemple 192.168.2.100).
Choisir le type de champs dans la table MySQL
En IPv4, la taille maximale d'une adresse IP est 255.255.255.255, soit 15 caractères. En suivant cette logique, un champs varchar(15) semble être idéal pour stocker l'IP.Il faut savoir que la manière la plus efficace d'enregistrer l'adresse est une forme numérique, avec un champs de type int unsigned. En terme d'espace, le gain est important: de 15 bytes pour un varchar(15) à 4 bytes pour un int unsigned.
Utiliser les fonctions MySQL de conversion
MySQL dispose de 2 fonctions prévues pour convertir une adresse IP vers un format numérique et vice-versa:- INET_ATON(): convertir une IP vers une représentation numérique
Sur la requete
SELECT INET_ATON('192.168.2.100')
on obtient la valeur : 3232236132
- INET_NTOA(): passer d'un format numérique à une adresse IP
Sur la requete
SELECT INET_NTOA(3232236132)
on obtient à nouveau : 192.168.2.100
Utiliser les fonctions PHP
Depuis PHP4, la conversion d'adresses IPv4 est réalisée avec les fonctions:- ip2long(): convertir une IP vers une représentation numérique
echo ip2long("127.0.0.1");
retourne 2130706433
- long2ip(): passer d'un format numérique à une adresse IP
echo long2ip("2130706433");
a pour resultat 127.0.0.1
L'utilisation des fonctions PHP est à privilégier, le passage au format IPv6 sera plus facile à réaliser
Conclusion
Pensez y, pour stocker une adresse IP dans une base de données, optez pour un champs numérique. Ce choix apporte un gain en terme d'espace de stockage et de performance des requêtes.