Bonjour à tous

Je suis actuellement en stage de développement dans une entreprise et je rencontre un petit souci.

Alors ma première mission était de réaliser un menu dont l'affichage était différent suivant le groupe auquel appartient l'utilisateur connecté.

j'ai fait ceci:

index :
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
 
<?php
    // Inclus le fichier contenant les fonctions personalisées
    include_once 'function.php';
 
    // Fonction de connexion à la base de données
    connexion_DB('XXXX');
 
    // Définit l'Id de la page d'accueil (1 dans cet exemple)
    $id_menu_accueil = 0;
 
    // Récupère l'id de la page courante passée par l'URL
    // Si non défini, on considère que la page est la page d'accueil
    if (isset($_GET['menu'])) {
        $_ENV['menu'] = intval($_GET['menu']);
    } else {
        $_ENV['menu'] = $id_menu_accueil;
    }
 
    // Extrait les informations correspondantes à la page en cours de la DB
    extraction_infos_DB();
<html>
[..]
<body>
<?php echo affiche_menu(); ?>
<?php deconnexion_DB(); ?>
<?php
// Affiche le menu en cours => id de la page = id de la page en cours.
echo $_ENV['titre'] . "\n";
 
?>
 
</body>
</html>
 
?>


et voici ma fonction affiche_menu :

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
function affiche_menu() {
 
            // On choisit le menu en fonction du groupe auquel l'utilisateur appartient
            $groupeTEST = $_SERVER[Groupe];
 
            // on ajoute un ; à la fin :
            $groupeTEST = ' '.$groupeTEST.';';
 
            $sql = "SELECT groupeNom FROM groupe";
 
            $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
            while($row = mysql_fetch_array($req))
            {
                        $result_array[] = $row['groupeNom'];
            }
 
            $resultat_trouve == false;
 
            // Comparaison des noms de groupes "purs"
            foreach($result_array as $groupeNom){
              if (strpos($groupeTEST, $groupeNom.';')){ // d'où l'intêrét d'avoir rajouter un ';' !
                    $groupemenu = $groupeNom;
                    $resultat_trouve == true;
               }
            } 
 
            //Comparaison avec les "sous-groupes" (ex : DOSC-XXX (- DOSC-MANAGER qui est considéré comme "pur") appartiennent à DOSC)
            if($resultat_trouve == false)
            {
                foreach($result_array as $groupeNom){
                    if (strpos($groupeTEST, $groupeNom.'-')!== false){
                        $groupemenu = $groupeNom;
                    }
                }
            }
 
 
 
        // On récupère le menu
        $sql = "SELECT g.groupeId, m.menuId, s.sousmenuId, g.groupeNom, m.menuTitre, s.sousmenuTitre
                FROM sousmenu s
                    JOIN droit d
                        ON s.sousmenuId=d.sousmenuId
                            JOIN groupe g
                                ON g.groupeId=d.groupeId
                                    JOIN menu m
                                        ON m.menuId = s.parent
                WHERE g.groupeNom IN ('$groupemenu')
                ORDER BY g.groupeId, m.menuId";
 
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());                  
 
        $catPrec = 0;
        // on ouvre la liste conteneur
        echo '<ul id="menu">';
        while ($data = mysql_fetch_array($req)) {
        // Si on entre dans une nouvelle catégorie
        if ($data['menuId'] != $catPrec) {
            // Si cette catégorie n'est pas la première, on ferme les listes
            if ($catPrec != 0) {
            echo "</ul>";
            echo "</li>";
            }
            //Nouvelle catégorie
            echo "<li>";
            echo "<a>";
            echo $data['menuTitre'];
            echo "</a>";
            echo "<ul>";
            $catPrec = $data['menuId'];
        }
        // On affiche la ligne sousmenu :
        echo "<li>";
        echo '<a href="index.php?menu='.$data['sousmenuId'].'">';
        echo $data['sousmenuTitre'];
        echo "</a>";
        echo "</li>";
        }
        echo "</ul>";
        echo "</li>";
        // C'est fini, on ferme la liste conteneur
        echo "</ul>";
}

Alors tout ça marche nickel et chaque utilisateur n'a dans son menu que les sous-menu auquel il a accès.

Mais après test, je me suis rendu compte que si je fais partie du groupe A par exemple que n'a accès qu'aux menus 1, 2 et 3, ben malgré que le menu ne me propose que les menus 1, 2 et 3, si je tape "http://localhost/index.php?menu=4" ben le menu 4 va s'afficher quand meme ...

Une idée ou un conseil ?