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

Publié par max dans java

est que ce framework fonctionne pour une application web ?

Publié par OmegaPlatypus dans java

Dans mon cas, plusieurs lettres etaient repetes plusieurs fois, dont la derniere a l'indfiniment. En ajoutant robot.keyReleaseKeyEvent.VK_A, robot.keyReleaseKeyEvent.VK_X, etc. apres chacune des frap...

Publié par BOKOMBEJEAN dans java

code source excellente,
maintenant comment l'afficher dans une zone de texte ou un champ de texte?

Publié par jyfv dans CMS

hgfdhgfdhgf

Publié par Patrice dans tuto

Bonjour

je cherche a activer mod_headers chez 1and1, impossible de mettre mes jpg en cache, auriez vous une piste ? merci !