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 7138 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par arthur dans java

essaye avec une while, cela devrais marcher. mais après je ne sais pas comment paramétrer. c'est toi qui voit

Publié par Lathois dans CMS

super impec <br>ca marche du feu de ZEUS<br>depuis le temps que je cherchais ca<br>j ai enfin trouve<br><br>merci Athois

Publié par Souti dans php5

Merci pour ce code. Trs utile.

Pour mon cas, il a fallu que j'ajoute une } avant ?> le pour fermer le for each.

Publié par Vincent dans tuto

Sympa votre petit script :) Oui il existe des bibliotheques deja toutes faites mais elles sont en general 50x plus lourdes que ce petit bout de code qui fait exactement ce qu'il faut. En plus votr...

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.