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

PHP & Base de données Discussion :

Session espace membre [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut Session espace membre
    Slt à tous,
    je suis entrain de creer un espace membre avec des sessions, avec un tuto que j'ai touvé sur un autre site.
    Mais je but sur une petite difficulté.

    la page de log :
    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
     
    <?
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
      extract($_POST);
      // on recupère le password de la table qui correspond au login du visiteur
      $sql = "select * from tbl_user where login='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
      $data = mysql_fetch_assoc($req);
     
      if($data['pwd'] != $pass) {
    ?><script type="text/javascript">
    <!--
    window.location.replace("?rub=index");
    -->
    </script>
    <?
        exit;
      }
      else {
        session_start();
        $_SESSION['login'] = $login;
        $_SESSION['lvl'] =$data['lvl']
        //bon login
    ?><script type="text/javascript">
    <!--
    window.location.replace("?rub=protec");
    -->
    </script>
    <?
      }    
    }
    else {
    ?><script type="text/javascript">
    <!--
    window.location.replace("?rub=index");
    -->
    </script>
    <?
       exit;
    }
    ?>
    et ensuite la page protegé

    protec.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    session_start();
     
     
    if(!isset($_SESSION['login']) && ($_SESSION['lvl'])!='1') {
    ?><script type="text/javascript">
    <!--
    window.location.replace("?rub=index");
    -->
    </script>
    <?
      exit;
    }....
    Mon probleme, c'est que j'ai donc ajouté un champ "lvl" dans ma bdd pour donner un niveau d'acces en fonction des membres, mais visiblement cela ne fonctionne pas.
    je veux par exemple lvl=1 pour les admin et lvl=2 pour les utilisateurs.
    j'ai impression qu'il ne prend pas en compte ma partie de code dans protec.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     && ($_SESSION['lvl'])!='1'
    Merci d'avance de votre aide
    @+

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Essaye de remplacer ton && par || (ou), car la il essaye de rediriger uniquement les utilisateur qui ne sont pas connectés (!isset($_SESSION['login'])) ET les utilisateurs qui ont un level différent de 1 (ce qui est impossible vu que si t'a pas de variable de session login tu en à pas non plus pour le level)

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    dans log.php
    j'utilise pourtant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ... else {
        session_start();
        $_SESSION['login'] = $login;
        $_SESSION['lvl'] =$data['lvl']
        //bon login
    ?><script type="text/javascript">
    <!--
    window.location.replace("?rub=protec");
    -->
    ...
    les données sont bien placées en session, non?

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Oui les données sont placés en session si la connexion est réussie, mais dans ta vérif tu redirige les utilisateur qui n'ont pas de variable de session login ET qui ont un level différent de 1, autrement dit il faut que ces 2 conditions soit remplis pour qu'il soit redirigé, c'est pour ca que je te conseil d'essayer en remplacant le && par ||

    EDIT : en fait ca devrait quand meme marcher car si la variable level n'existe pas elle est forcément différente de 1 donc l'erreur vient peut être pas de la,essaye quand meme pour voir

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    Ceci t'aide-t-il ?

    protec.php
    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
     
    session_start();
    $is_connected = isset($_SESSION['login']);
    $is_admin = ($is_connected && $_SESSION['lvl'] == 1);
    $is_user = ($is_connected && $_SESSION['lvl'] == 2);
    // $is_user = ($is_connected && !$is_admin);
    if($is_connected){
       if($is_user){
           echo 'Vous êtes un utilisateur';
       }
       elseif($is_admin){
           echo 'Vous êtes un administrateur';
       }
       else{
           // level inconnu ?
       }
    }
    else{
       header('location:connexion.php');
    }

  6. #6
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Bonsoir,

    Ceci t'aide-t-il ?

    protec.php
    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
     
    session_start();
    $is_connected = isset($_SESSION['login']);
    $is_admin = ($is_connected && $_SESSION['lvl'] == 1);
    $is_user = ($is_connected && $_SESSION['lvl'] == 2);
    // $is_user = ($is_connected && !$is_admin);
    if($is_connected){
       if($is_user){
           echo 'Vous êtes un utilisateur';
       }
       elseif($is_admin){
           echo 'Vous êtes un administrateur';
       }
       else{
           // level inconnu ?
       }
    }
    else{
       header('location:connexion.php');
    }
    Ca me parait pas mal cela, je crois que je vais adopter.

    Petite question subsidiaire, coté sécurité cela vaut quoi ce genre de script ???

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

Discussions similaires

  1. session qui se melange sur un espace membre
    Par monlou dans le forum Langage
    Réponses: 7
    Dernier message: 12/08/2014, 22h43
  2. Espace membre et sessions
    Par Stormy68 dans le forum Langage
    Réponses: 7
    Dernier message: 30/11/2010, 22h04
  3. session et espace membre!
    Par italiasky dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/08/2010, 16h39
  4. Session espace membres
    Par bernard26000 dans le forum Langage
    Réponses: 1
    Dernier message: 28/12/2008, 10h06
  5. [MySQL] Espace membre avec session
    Par yamatoshi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2008, 11h11

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