Sortir une adresse IP aléatoire pour bdd

Résolu
MiWi86-33 Messages postés 142 Date d'inscription   Statut Membre Dernière intervention   -  
 pyschopathe -
Bonjour,

En tant que "novice" (ça fait 3 ans que j'essaye de faire quelque chose en informatique!!!!), je voulais avoir 2-3 renseignements (enfin, je ne les ai pas compter.....):D.
Probleme:

J'ai un utilisateurs, il peut choisir une adresse IP automatiquement (donc la machine lui sort une adresse IP) ou manuellement.
J'ai réussi à traiter l'option manuel:
Code qui permet de vérifier si l'entrée de l'utilisateur est bonne


function verif()
	{
		var expr = /^(((22[4-9]|23[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))$)/;
		var chaine = document.getElementById('adrMan').value ; 
		if(!expr.exec(chaine))
			{
			alert('adresse non valide : sélectionnez une adresse entre 224.0.1.0 et 239.254.254.254');
 			champ.focus();
			}
			else
			{alert('adresse valide')}
	}




et voilà le petit formulaire pour l'entrrée de l'utilisateurs

<div id="formSelectMan" style="display:none">
    <br />
      <input name="adrMan" type="text" id="adrMan" value="Entrez l'adresse" size="15" />
      <input name="vue" type="button" value="Vérifier" onclick="verif()" />
    </div>




d'accord, pour le moment, ce n'est pas utile de savoir ça surement.
Mais voilà, il faut que je puisse "sortir" une adresse IP appartenant à la plage 224.0.1.0-239.254.254.254, de plus, il faut que cette adresse ne soit pas dans une mes table de ma "future" base de donnée.

J'ai penser créer une table IP où je pouvais rentrer les adresse possible, mais c'est ridicule car, table trop grande et pour rien.
Après j'ai penser à de l'incrémentation, mais les "." me dérange et la délimitation aussi.

Et après, j'ai arrêter de penser car j'ai fait le tour des zones de mon cerveau sans résultats...

Donc si quelqu'un avec une idée, une pensée, un code??? je prends tout.

Merci d'avance.

6 réponses

pyschopathe
 
Et si tu prenais l'adresse au format hexadécimal, ce ne serait pas plus simple de faire un incrémentation ? Pour afficher l'adresse au format "classique", tu n'as ensuite plus qu'à regrouper les valeurs hexadécimales par 2. (je dis ça un peu au hasard, d'intuition...)
0
MiWi86-33 Messages postés 142 Date d'inscription   Statut Membre Dernière intervention   9
 
j'y ai pensé à l'incrémentation mais faut stopper à 254 à chaque octet...
0
pyschopathe
 
En fait, je pensais qu'il serait plus facile de travailler sur l'adresse convertie en hexadécimale, mais mon idée suppose beaucoup de conversions :

- tu convertis l'adresse en hexa (fonction dechex sur chacune des quatre parties de l'adresse)
- tu convertis la valeur hexadécimale obtenue en décimale (hexdec)
- tu incrémentes
- tu reconvertis en hexa (dechex)
- tu split la valeur obtenue en blocs de deux
- tu convertis ces blocs en décimal

J'imagine qu'il doit y avoir une méthode plus directe mais je ne l'ai pas en tête...
0
MiWi86-33 Messages postés 142 Date d'inscription   Statut Membre Dernière intervention   9
 
ah ouai en effet, ça fait beaucoup de conversion et ça peut être long, mais l'idée est bonne j'avoue. enfin je crois...
0
Dr Zoidberg Messages postés 529 Date d'inscription   Statut Membre Dernière intervention   100
 
Salut,

Pourquoi ne pas utiliser les fonctions PHP ip2long et long2ip ? Elles permettent entre autres simplement :
- de valider une IP 'chaine' :
if($ip == long2ip(ip2long($ip))

- d'incrémenter une IP :
$ip = '192.168.0.56';
$suivante = long2ip(ip2long($ip)+1);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MiWi86-33 Messages postés 142 Date d'inscription   Statut Membre Dernière intervention   9
 
ah, je connaissais pas cette fonction...merci, je vais voir dessus si ça correspond...
0
pyschopathe
 
Hé ben voilà, il suffit de demander et php l'a déjà fait ! Merci Zoidberg, grâce à toi ma science s'est encore accrue ! Mouahahahahahaha !
0