IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction qui gère un fichier d'exclusion


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 52
    Par défaut Fonction qui gère un fichier d'exclusion
    bonjour à tous, je travail sur une application php qui permet de comparer des configurations serveurs.
    Actuellement, on recoit via des POST les conf serveurs. Pour chaque conf recu encodé en base64, on les recréer en local, on parse et on affiche tous dans un gros tableau.

    Je dois ajouter à cela un fichier d'exclusions dans lequel est renseigné les sections et les paramètres à exclure.

    exemple contenu d'un fichier d'exclusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [ENVIRONEMENT], FRST_DIR;
    [BROKER], alive_response_x;
    [rtdnfeeder], ping_intervals;

    Voila comment je parse et je boucle sur tous mes fichiers actuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    ...
    function getLine($cle, $section, $tableau) {
    	$found = false;
    	$ligne = 0;
    	while(!$found && $ligne < count($tableau)) {
    		if ($tableau[$ligne][0] == $section && $tableau[$ligne][1] == $cle) {
    			$found = true;
    		}
    		else {
    			$ligne++;
    		}
    	}
    	if ($found) {
    		return $ligne;
    	}
    	else {
    		return FALSE;
    	}
    }
    /*
    function exclusion() 
    { je ne sais pas la codé!}
    */
    ...
     
    $i = 1;
    $h = 1;
     
    while (isset($_POST['nom_fichier'.$h]))
    {
    // pour chaque fichier reconstitué, les parser 
    	$FichierParser = new ParseIni($_POST['nom_fichier'.$h]);
    	$propertiesArray[$h] = $FichierParser->parse();
    	$h++;
    }
    $final = Array();
    $nb_fichier = 1;
    $nb_ligne = 0;
     
    foreach($propertiesArray as $config) {
    	foreach($config as $section=>$ligne) {
    		$all_sections[]=$section;
    		foreach($ligne as $cle=>$valeur) {
    			/*if ( section/parametre nest pas dans exclusion) {*/
    			if (getLine($cle,$section,$final) !== FALSE) {
    				$line = getLine($cle,$section,$final);
    				$final[$line][$nb_fichier+1]=$valeur;
    			}
    			else {
    				$final[$nb_ligne][0]=$section;
    				$final[$nb_ligne][1]=$cle;
    				$final[$nb_ligne][$nb_fichier+1]=$valeur;
    				$nb_ligne++;
    			}
    			/* } */
    		}
    	}
    	$nb_fichier++;
    Donc voila, comme vous pouvez le contastater, il faut créer une fonction qui va regarder si la section et son parametre existe en renvoyant true or false. Si la fonction trouve le parametre/section => on retire du tableau, sinon, ne rien faire.

    J'ai besoin d'aide pour créer cette fonction !

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bon perso, j'ai pas trop compris (et je dois pas être le seul vu que t'as pas eu de réponse )

    Citation Envoyé par ben7875 Voir le message
    exemple contenu d'un fichier d'exclusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [ENVIRONEMENT], FRST_DIR;
    [BROKER], alive_response_x;
    [rtdnfeeder], ping_intervals;
    Dans cet exemple, ENVIRONEMENT, BROKER, FRST_DIR, etc... bref tout, ça vient d'où ? Ce sont ces quelques lignes que tu dois créer ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 52
    Par défaut
    exemple contenu d'un fichier d'exclusion : ce qu'il y a entre crochet correspond à une section et à droite une clé.

    Ces sections et clé qu'on trouve dans le fichier d'exclusion sont les sections & clé qu'on retrouve dans chaque fichier de config. Chaque fichier de config .ini ayant une arborescence de type

    [section]
    clé1=valeur
    cléx= valeur x
    [section2]
    ..;

    Je pense que je vais delesté le post, il est peu probable qu'une personne puisse m'aider à se sujet,

    j'ai depuis avancé sur le probleme mais reste de nombreux bug.

    a ++

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    ouais donc en gros, c'est une simple génération de fichier... il suffit d'utiliser les fonctions fopen(), frwite() et peut-être fread()

    Utilisation (à partir de l'exemple du PHP Manual -> fwrite() ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    $filename = '/chemin/vers/mon/config.ini';
     
    // On utilise \n pour marquer un retour à la ligne dans le fichier (qui se comporte comme un fichier .txt)
    $somecontent = "[".$section."]".$cle."=".$valeur."\n";
     
    // Assurons nous que le fichier est accessible en écriture
    if (is_writable($filename)) {
     
        // Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
        // Le pointeur de fichier est placé à la fin du fichier
        // c'est là que $somecontent sera placé
     
        // voir la fonction fopen() pour plus d'infos
        if (!$handle = fopen($filename, 'a')) {
             echo "Impossible d'ouvrir le fichier ($filename)";
             exit;
        }
     
        // Ecrivons quelque chose dans notre fichier.
        if (fwrite($handle, $somecontent) === FALSE) {
            echo "Impossible d'écrire dans le fichier ($filename)";
            exit;
        }
     
        echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
     
        fclose($handle);
     
    } else {
        echo "Le fichier $filename n'est pas accessible en écriture.";
    }
    ?>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 52
    Par défaut
    en faite, j'ai déja généré les fichiers, le tout est parser et reconstitué, bref toutes mes conf s'affichent dans un grand tableau avec des cases colorées en vert pour les parametres identiques / oranges pour différent et rouge pr les parametres absents. J'utilise le premier fichier comme fichier de référence.

    En faite, le but est de prendre un compte un fichier appelé "exclusions.ini" qui n'affichera pas dans mon tableau de comparaison finale les lignes indiqués dans ce fichier.

    c'est plus clair ? ^^

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm ben justement, tu lis ce fameux fichier et tu le place dans un tableau.

    Je suppose que l'arborescence de ce fichier est la même que pour l'affichage de ton tableau. Donc si dans l'affichage de ton tableau tu es dans $tab[x][y], tu regardes dans ton exception $exept[x][y] si tu peux l'afficher ou pas.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 52
    Par défaut
    oki merci de l'info

    je ne voyait pas la chose comme ca, mais c'est envisagable !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur ios_base dans une fonction qui renvoie un fichier.
    Par jamsgoodon dans le forum Débuter
    Réponses: 3
    Dernier message: 03/03/2011, 18h57
  2. Créer une API qui gère un fichier XML
    Par sonia5 dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2009, 10h40
  3. [AJAX] Fonction qui appelle mauvais fichier
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/02/2009, 14h10
  4. Réponses: 9
    Dernier message: 02/09/2008, 14h52
  5. Réponses: 2
    Dernier message: 13/06/2006, 21h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo