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 :

Les sessions ne fonctionnent pas.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 28
    Par défaut Les sessions ne fonctionnent pas.
    Bonjour à tous, voilà près de 3 semaines que je planche sur le sujet des session, je me permet de posé ma question ici.

    Lorsque l'on se trouve sur la page de connexion, selon le nom d'utilisateur, on regarde le "niveau" de l'utilisateur (soit "admin" soit "membre") mais voilà pour empêcher l'accès au pages admin par un "membre" j'ai essayé ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
            session_start();
            if (empty($_SESSION['admin']) || !empty($_SESSION['membre']))
    		{
                header('Location:index.php');
            }
    		elseif (!empty($_SESSION['admin']))
    		{
    ?>
    (bien évidement j'ai fermé mon accolade à la fin), mais voilà depuis que ce code est en place je ne puis me connecté et accédé à ma page alors que cela fonctionnais correctement auparavant.

    Hésitez pas s'il vous faut plus de code etc....

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Est-ce que ton admin est aussi un membre ? Autrement dit, est-ce qu'il y a des données membre dans ta session pour l'admin ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 28
    Par défaut
    Dans ma session pour admin les seuls donnée membre qui peuvent être là c'est concernant la session ouverte sinon non car la page d'accueil son différentes pour chacun et ensuite selon le niveau ils accèdent à plus ou moins de pages (qui celle ci ne sont pour tout le monde)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    au lieu d'utiliser 2 variables de SESSION ($_SESSION['admin'] et $_SESSION['membre']), il en suffit d'une seule :

    • $_SESSION['statut'] -> qui vaut 'admin' ou 'membre' (ou 0, 1,... 10, si tu veux gérer plus de 2 statuts : 'visiteur', 'membre', 'admin', super-admin',...).

    C'est plus simple à gérer.

    dispatch.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php session_start();
    if ( !empty($_SESSION['statut']) )
    {
       if ( $_SESSION['statut'] == 'admin' ) {
          header('Location:index-admin.php');
       } elseif ( $_SESSION['statut'] == 'membre' ) {
          header('Location:index-membre.php');
       } else {
          header('Location:index-connexion.php');
       }
    } else {
          header('Location:index-connexion.php');
    }

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 28
    Par défaut
    Donc du coup si je veut que seul les admin puisse accédé a une page il me faut juste la variable admin ? et inversement ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 28
    Par défaut J'accède à mes pages web si je connais l'url
    Bonjour, depuis mon dernier message, j'ai retravaillé sur mon code qui fonctionne en partie mais je bloque à la fin car je ne voie pas comment le géré mon problème.

    Lorsque je suis sur ma page de connexion, je rentre un login et un mot de passe (en soit rien de bien compliqué), la connexion se fait si l'utilisateur est bien reconnue tout ça tout ça et est redirigé sur la page adéquat.

    Donc voilà mon problème, je n'arrive pas à géré mes deux type d'utilisateur (admin et membre) je vous met donc les pages php pour que vous puissiez avoir un aperçue,

    Page 1 : index.php --> page ou l'utilisateur se logue et elle nécessite la page connection_back.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
    21
    22
    23
    24
    25
    26
    27
    <html>
        <head>
            <meta charset="UTF-8">
            <link href="page_de_connection.css" rel="stylesheet" type="text/css"/>
            <script type="text/javascript" src="connection.js"></script>
            <?php include_once 'CDN.php'; ?>
            <title>Page de connexion</title>
        </head>
        <body>
            <div id="fond_ecran" class="fond_ecran"/>        
            <div class="wrapper fadeInDown">
                <div id="formContent">
                    <div class="fadeIn first">
                        <img src="image/customer.svg" id="icon" alt="User Icon" />
                    </div>
                    <form method="POST" action='connection_back.php' onsubmit=" return verifForm(this)">
                        <input type="text" id="login" class="fadeIn second" name="pseudo" placeholder="Pseudo" onblur="verifPseudo(this)">
                        <input type="password" id="password" class="fadeIn third" name="password" placeholder="Mot de Passe" onblur="verifPassword(this)">
                        <input type="submit" class="fadeIn fourth" value="S'identifier">
                    </form>
                    <div id="formFooter">
                        <a class="underlineHover" href="oubli_mot_de_passe.php">Vous avez oublié votre mot de passe ?</a>
                    </div>
                </div>
            </div>
        </body>
    </html>
    Page 2 : connection_back.php --> Permet de lancer les requêtes pour savoir si l'utilisateur est enregistré et quelle est son niveau
    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
    <?php
    include_once 'config.php';
     
    $db = new PDO("mysql:host=" . Config::SERVEUR . ";dbname=" . Config::BASE, Config::UTILISATEUR, Config::MOTDEPASSE);
     
    $pseudo = $_POST['pseudo'];
     
    $req = $db->prepare('SELECT id_utilisateurs, password FROM utilisateurs WHERE pseudo = :pseudo && (Niveau = "membre")');
    $req->bindParam(':pseudo', $pseudo);
    $req->execute();
    $resultat = $req->fetch();
     
     
    $admin = $db->prepare('SELECT id_utilisateurs, password FROM utilisateurs WHERE pseudo = :pseudo && Niveau="admin"');
    $admin->bindParam(':pseudo', $pseudo);
    $admin->execute();
    $resultat2 = $admin->fetch();
     
     
    $isPasswordCorrect = password_verify($_POST['password'], $resultat['password']);
    $isPasswordCorrect2 = password_verify($_POST['password'], $resultat2['password']);
     
    if ($isPasswordCorrect) 
    	{
    	session_start();
    	$_SESSION['membre'] = $resultat['id_utilisateurs'];
    	$_SESSION['pseudo'] = $pseudo;
    	$_SESSION['logged'] = true;
     
    	header('Location: page_accueil_membre.php');
     
    	$resultat = $req->fetch();
    	}else if ($isPasswordCorrect2) 
    		{
    			session_start();
    			$_SESSION['admin'] = $resultat2['id_utilisateurs'];
    			$_SESSION['pseudo'] = $pseudo;
    			$_SESSION['logged'] = true;
    			header('Location: page_accueil_admin.php');
     
    		}else 
    		{
    			header('Location:index.php');
    		}
    ?>
    Page 3 : session_verif.php --> Pages de vérification pour savoir si l'utilisateur est bien logué ou non (ps : j'inclue cette page dans tout mes fichiers php pour évité de ré-écrire mon session_start()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    session_start();
     
    if(!isset($_SESSION['logged']) || !$_SESSION['logged']) {
    	header('Location: index.php');
    }
    ?>

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2013, 16h37
  2. [2008] "Gérer les utilisateurs" ne fonctionne pas
    Par gifffftane dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 06/12/2007, 17h22
  3. les liens ne fonctionnent pas
    Par knopflerized dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 29/10/2007, 18h11
  4. Les EL ne fonctionnent pas !
    Par tequila13 dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 16/06/2007, 21h26
  5. Mes Sessions Ne Fonctionne Pas
    Par bebas dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2007, 09h27

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