Prblème de session - PHP

Résolu
Bonjour à tous,

Problème : mon site possède une page d'identification derrière laquelle se trouve une page de log qui inscrit en session l'id de l'utilisateur logué. Si la personne a les droit "Admin" il peut alors voir et modifier des données des membres enregistré. MAIS, quand l'admin se rend sur le formulaire de modification, la session prend l'id de la personne modifier.

Exemple : l'admin à l'id = 1, le membre l'id 2. L'admin se logue la session prend donc l'id 1. l'admin modifie le membre la session prend l'id 2.

Code ou l'id change (formulaire de modification) :

//id = 1
print $_SESSION['id']."--";

//On récupère l'id du membre à modifier
//id = 2
$id = $_GET['ident'];

//id = 2
print $_SESSION['id']."--";

Ma question est donc pourquoi et comment remédier à ce problème?

Merci de vous penchez sur mon problème.

7 réponses

  1. Bonjour,

    impossible, tu ne donnes pas tout ton code ! lol

    A+
    Gaerebut
    1. Contributeur
      Salut.

      Personnellement, je fais un espace membre à niveaux.

      Un membre simple et de niveau 2 (1 à l'inscription, 2 si l'adresse e-mail est validée)

      Et l'admin est niveau 50 (je laisse une marge pour créer d'autre niveaux entre.

      Ensuite, je mets des
      if($_SESSION['niveau'] == 50)
      partout.
      Par exemple dans le menu membre.

      if($_SESSION['niveau'] >= 2)
      On affiche un lien vers la page 'Mon Compte'

      Puis pour les admins :
      if($_SESSION['niveau'] == 50)
      Un lien vers la pages 'Les Membres' qui permet de modifier les infos des membres, etc. ...

      Si tu as besoin de plus amples précisions, contacte-moi.

      Cordialement
      1. Si cela peut aider

        Code du bouton modifier :
        //$user est un tableau qui contient les données du membre
        <a href="menu.php?page=Admin/modify.php&ident=<?php echo $user['id'] ?>">Modifier</a>

        Code ou je récupère l'id passé en paramètre dans le bouton :

        print $_SESSION['id']."--";

        $id = $_GET['ident'];
        print $_SESSION['id']."--";
        $select = "select * from Users where id=".$id.";";
        1. Certains hébergeurs activent l'option register_global, ce qui fait que une variable portant le nom des clées des données GPC (GET, POST, COOKIES) est créée.
          Donc si tu modifies $id, tu modifies aussi $_SESSION['id'].
          1&1 a cette option d'activée ; je te conseil de le passer en PHP5 (PHP4 par défaut), cette option sera désactivée.
          1. Tout est expliqué par avion-f16. Pour éviter ce désagrément, il suffit juste de mettre l'id 2 dans une autre variable; par exemple : $id2 = $_GET['ident'];
            1. Merci à vous, je viens de faire les modifications cela fonctionne parfaitement.
              1. Ce n'est pas vraiment la solution.
                Pour moi, la meilleure des solutions est de désactiver cette option.