Sortir une adresse IP aléatoire pour bdd

Résolu/Fermé
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 - 8 août 2008 à 12:40
 pyschopathe - 8 août 2008 à 15:16
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

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 vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
8 août 2008 à 12:49
j'y ai pensé à l'incrémentation mais faut stopper à 254 à chaque octet...
0
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 vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
8 août 2008 à 14:04
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 jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
8 août 2008 à 14:31
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 vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
8 août 2008 à 14:42
ah, je connaissais pas cette fonction...merci, je vais voir dessus si ça correspond...
0
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