Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
985 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Boucle et lecture de fichiers...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]Boucle et lecture de fichiers...

n°1549817
Joker28
Posté le 26-04-2007 à 14:38:27  profilanswer
 

Hop tout d'abord voici le code qui pose problème :
 

Code :
  1. <?php
  2. // Teste l'existence du fichier nmapIP1 et l'ouvre s'il existe
  3. $file = './tmp/nmapIP1';
  4. if (file_exists($file))
  5. {
  6. $fp = fopen($file, "r" );
  7. }
  8. else
  9.         {
  10. echo "Fichier introuvable ! ";
  11.         }
  12. // Ouvre le fichier nmapIP2
  13. $fichiertableau = './tmp/nmapIP2';
  14. $fp2 = fopen($fichiertableau,"w" );
  15. while (!feof($fp))  // On parcourt nmapIP1
  16. {
  17. $ligneIP = fgets($fp,4096); // On relève ligne par ligne
  18. while (!feof($fp2))  // On parcourt nmapIP2
  19.  {
  20.  echo "Coucou";
  21.                 $tableau = fgets($fichiertableau,4096); // On relève ligne par ligne
  22.  if (strcmp($tableau,$ligneIP) != 0) // On compare une ligne de nmapIP1 à toutes celles de nmapIP2
  23.  {
  24.  fwrite($fp2,$ligneIP); // Si les lignes sont différentes, on écrit la nouvelle IP dans nmap IP2
  25.  }
  26.  }
  27. }
  28. // Servira à compter le nombre d'IP maximal relevé
  29. //if (file_exists($fichiertableau))
  30. // {
  31. // $tab = file($fichiertableau);
  32. // $nb = count ($tab);
  33. // echo $nb;
  34. // }
  35. //else
  36. // {
  37. // echo "Erreur" ;
  38. // }
  39. ?>


 
Maintenant j'explique ce que je veux faire  :) . J'ai récupérer grace à NMAP une liste d'IP dans le fichier nommé nmapIP1. Je souhaite comparer celui-ci à celui appelé nmapIP2 et, si une IP n'est pas présente dans ce-dernier, la rajouter. Mais lorsque j'exécute le script en le lançant avec Firefox, j'ai une sorte de boucle infinie qui plante quasiment le navigateur et lorsque j'ouvre nmapIP2, il contient la première adresse IP du fichier nmapIP1 et ce, en très grande quantité  :whistle:  
De plus, en essayant de créer le fichier nmapIP2 avant l'exécution, je vois que les IP présentes dans le fichier sont écrasées...
Alors je sollicite votre aide pour savoir d'où vient l'erreur et si je peux faire ce que je veux faire d'une avec du php et deux si ma piste semble la bonne...(je suis débutant en php :D )
 
 
Merci d'avance...
 
PS : Le fichier nmapIP2 est crée par le script, il est donc vide lors du premier parcours par la boucle.
 
EDIT : Merci pour vos conseils, tout marche à la perfection  :jap:

Message cité 1 fois
Message édité par Joker28 le 10-05-2007 à 16:10:10
mood
Publicité
Posté le 26-04-2007 à 14:38:27  profilanswer
 

n°1550104
soju
One shot !
Posté le 26-04-2007 à 15:57:17  profilanswer
 

effectivement, pas terrible ta boucle
 

Joker28 a écrit :

Maintenant j'explique ce que je veux faire  :) . J'ai récupérer grace à NMAP une liste d'IP dans le fichier nommé nmapIP1. Je souhaite comparer celui-ci à celui appelé nmapIP2 et, si une IP n'est pas présente dans ce-dernier, la rajouter.

ce que je ferais :
- lecture du premier fichier et création d'un 1er tableau d'ip
- lecture du second fichier et création d'un 2eme tableau d'ip
- ajout dans le 2ème tableau des ip manquantes
- réecriture du 2ème fichier
 

Joker28 a écrit :

De plus, en essayant de créer le fichier nmapIP2 avant l'exécution, je vois que les IP présentes dans le fichier sont écrasées...

relis la doc tu comprendras : http://fr.php.net/fopen
 

Joker28 a écrit :

PS : Le fichier nmapIP2 est crée par le script, il est donc vide lors du premier parcours par la boucle.

donc tu pourrais simplement copier le contenu de nmapIP1 dans nmapIP2, non ?  :whistle:  

n°1550389
Joker28
Posté le 27-04-2007 à 09:53:14  profilanswer
 

Merci beaucoup pour ta réponse qui m'a bien aidé  :)  
 
J'ai repris tout ça ce matin et voilà mon nouveau code :
 

Code :
  1. <html>
  2. <head>
  3. <title>Gestion des adresses IPs</title>
  4. </head>
  5. <body>
  6. <h1>Bienvenue dans le programme de gestion des adresses IPs</h1>
  7. <?php
  8. $file = './tmp/nmapIPXXXX';
  9. if (file_exists($file))
  10. {
  11. $fp = fopen($file, "r" );
  12. $tab = file($file);
  13. $nb = count($tab);
  14. //echo "$nb <br>";
  15. }
  16. else
  17.         {
  18.         echo "Fichier introuvable 1! ";
  19.         }
  20. $fichiertableau = './tmp/nmapIPTABXXXX';
  21. if (file_exists($fichiertableau))
  22. {
  23. $fp2 = fopen($fichiertableau,"a+" );
  24. $tab2 = file($fichiertableau);
  25. $nb2 = count ($tab2);
  26. //echo "$nb2 <br>";
  27. }
  28. else
  29.         {
  30.         echo "Fichier introuvable 2! ";
  31.         }
  32. for ($i=0; $i<$nb; $i++)
  33. {
  34. for ($j=0; $j<$nb2; $j++)
  35.  {
  36.  if ($tab[$i] == $tab2[$j])
  37.   {
  38.   break;
  39.   }
  40.  else
  41.   {
  42.   $nb3 = count($tab2);
  43.   if ($j == $nb3-1)
  44.    {
  45.    fwrite($fp2,$tab[$i]);
  46.    }
  47.   }
  48.  }
  49. }
  50. $nbtotal = count($tab2);
  51. echo "Le nombre maximal d'adresses IP relevées dans le sous-réseau XXXX est de $nbtotal";
  52. fclose($fp);
  53. fclose($fp2);
  54. ?>
  55. </body>
  56. </html>


 
Alors si ça peut résoudre les problèmes de quelqu'un d'autre, ce code fonctionne parfaitement  :)  
Néanmoins, j'aimerais appliquer ce script à plusieurs fichiers contenant des adresses IP (correspondant à chaque sous-réseau) situés dans un même répertoire.
En gros, il faudrait que je passe en paramètre le nom de chaque fichier qui m'intéresse dans le répertoire mais je ne sais pas comment récupérer une liste de nomns de fichiers pour les repasser en paramètres...
Si quelqu'un peut me donner une piste, ça serait sympa  :)  
 
Merci d'avance

n°1550414
soju
One shot !
Posté le 27-04-2007 à 10:23:09  profilanswer
 

pas besoin de la 2ème boucle ligne 38
 
un peu de lecture :
http://fr.php.net/in_array
http://fr.php.net/glob


Message édité par soju le 27-04-2007 à 10:23:26
n°1550554
Joker28
Posté le 27-04-2007 à 14:24:40  profilanswer
 

Encore une fois merci, j'vais regarder ça  :jap:

n°1550748
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2007 à 17:46:48  profilanswer
 

Tu fais un array_diff($tab, $tab2).
 
Ça te donne toutes les valeurs de $tab qui ne sont pas dans $tab2


---------------
Gamertag: CoteBlack YeLL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Boucle et lecture de fichiers...

 

Sujets relatifs
PHP et Active Directory (fonction ldap_search) [résolu][Résolu][C] problème de link SDL, SDL_image, SDL_ttf sous cygwin
[résolu] Remplissage d'un champ de formulaire par javascript[Résolu] Exécution de Visual Studio lors de crash des applis ?!
python et l'unicode : -U / python 3000 / repr ... [résolu]Créer un batch pour redémarrer un programme [résolu]
[Résolu][C# .Net] Changer le curseur quand je pointe une image[PHP][resolu] Comment appeler une fonction située....
[non résolu] mysql- rechercher dans plusieurs tables[MySql] Concatener deux champs [Resolu]
Plus de sujets relatifs à : [Résolu]Boucle et lecture de fichiers...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR