Publié le 07/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
3 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 !

avatar Connan

Publié par Connan

le 27/12/2016 à 23:58:34

j'utilise mysql phpmyadmin et j'ai cree une table IP mais j'ai mis varchart(15) mais quese qui faut que je fasse pour stocker l'ip des joueurs qui s'inscrivent

avatar fffffff

Publié par fffffff

le 28/12/2016 à 11:46:32

comment est-ce que les joueurs s'inscrivent, utilisez-vous PHP ?

A lire aussi

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

Publié par Christophe dans CMS

en remplacant la ligne:
SHGetFileInfo(PChar(ePath.Text + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON);
par la ligne
SHGetFileInfo(PChar(ePath.Text + Sear...

Publié par ali dans logiciel

it is very good i am very happy becose for hand cap helpn tha is a good work

Publié par Axel dans java

Bonjour,
cet exemple a ete prepare et compile sous Netbeans 7.2 ;)
S'il y a un soucis, n'hesite pas

Publié par need help dans java

Merci pour cet exemple.
Est ce possible de récupérer le flux video d'une camera ou bien une appareil photo branché par USB.

Merci d'avance.

Publié par rsuinux dans php5

Merci pour cet article.
Cela m'a debloque pour sqlite3 sur openwrt :)
Cordialement.