Publié le 07/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Stocker une adresse IP dans une BD MySQL

Le plus souvent, les adresses sont enregistrées dans une base MySQL pour suivre les visiteurs d'un site internet. Sur des volumes importants, le technique consiste à enregistrer l'adresse IP au format numérique et non pas sous forme d'un varchar. Le stockage sous forme d'un Int permet d'avoir un index de colonne de meilleure qualité et ainsi améliore les performances de la base de donnée.

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.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar Kal747

Publié par Kal747

le 19/08/2014 à 14:26:46

Merci pour l'info !

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - db
Mise a jour
07/10/2010
Visualisation
vu 6294 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par jyfv dans CMS

hgfdhgfdhgf

Publié par coramarr dans java

Peut-on trouver des infos sur cette suite qui serait utilise en statistiques. Des documents ou ouvrages qui relatent les divers possibilites d'utilisation de cette suite.
Je suis un particulier ni...

Publié par fobec dans CMS

fff - f,f,fklmf @@ f,kflf,k ??? !!! fff f f insert

Publié par Josalado dans CMS

je n'arrive pas à installer le logiciel <br>Message d'erreur : l'assistant d'installation n'a pas pu créer le dossier C:\program Files\Olibul <br>...

Publié par JMC dans logiciel

L'adresse donnée est celle du provider et non celle de l'utilisateur apparemment, il me localise a Braine l'Alleud et je me trouve à Huy ?
Sinon génial qui en est l'auteur ?
Cordialement...