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 :

Gestion des sessions


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 11
    Par défaut Gestion des sessions
    Bonjour,

    J'ai un soucis avec une session php. Je suis en train de faire un espace sécurisé pour un site. Il y a une page de connexion et ensuite on arrive sur une page sécurisé qui elle-même permet d'accéder à d'autres pages sécurisées.

    Ma page de connexion fonctionne. Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <?php
        if (isset($_POST['login']) == "toto" AND $_POST['mot_de_passe'] ==  "toto") 
        {
        session_start();
        $_SESSION['auth'] = "ok";
        ?>
    Ma page s'affiche bien et j'ai bien la variable $_SESSION['auth'] qui est à 'ok' quand je la print. J'ai un lien sur cette page qui me renvoie à une autre page que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
        session_start();
        if (empty($_SESSION['auth']))
        {header ('Location:http://www.monsite.org');exit();}
    ?>
    <p>Ma page 2</p>
    Et là, à chaque fois j'ai la redirection alors que ma variable n'est pas vide.

    Je sèche...

    Merci pour votre aide.

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonsoir

    Copie/colle le code ci-dessous dans un bête script php (test.php) et exécute-le. Que se passe-t-il ?

    Ben, dans 100% des cas, tu seras dans la partie "EN DEHORS" et ... c'est logique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $arr['login'] = 'toto';
    $arr['mot_de_passe'] = 'toto';
     
    if (isset($arr['login']) == "toto" AND $arr['mot_de_passe'] ==  "toto") 
    {
        echo 'DANS LE IF';
    } else {
        echo 'EN DEHORS';
    }
    Décortique ton test... Que retourne isset($_POST['login']) ? Cela retourne un booléen (True ou False). Tu compares donc True avec "toto" et ... ben non, ce n'est pas la même chose.

    Voici pourquoi cela ne fonctionnera jamais de cette manière.

    Je suppose que tu programmes en PHP7 aussi voici une proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $arr['login'] = 'toto';
    $arr['mot_de_passe'] = 'toto';
     
    if ( (($arr['login'] ?? '') == 'toto') && (($arr['mot_de_passe'] ?? '') ==  'toto') )
    {
        echo 'DANS LE IF';
    } else {
        echo 'EN DEHORS';
    }
    Bonne soirée.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 11
    Par défaut
    Merci Cavo pour ta réponse. Tu m'as aiguillé vers une résolution :

    Il manque une P*** de parenthèse à mon code. Je comprends pourquoi tu croyais que je comparais le résultat du isset. Y'a un moment, quand on n'a plus les yeux en face des trous, il vaut mieux aller au lit.

    Sinon, je suis bien dans le IF avec tes 2 codes. Pas de différence chez-moi ça fonctionne.

    Le problème s'est déplacé : Parse error: syntax error, unexpected '{' alors que cette fois j'ai contrôlé toutes mes parenthèses et autres... Bon, je vais bien finir par trouver le truc.

    Edit : Mystère sur cette erreur. J'ai créé un nouveau fichier avec le même code et ça fonctionne.

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 11
    Par défaut
    Ça avance un peu, mais j'ai toujours un problème.

    Voici le code de ma page de log :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      <div class="w3-card-4 w3-margin w3-white">
        <div class="w3-container">
          <p>Veuillez entrer identifiant et mot de passe ci-dessous :</p>
            <form action="admin.php" method="post">
                <p>Identifiant : <input type="text" name="login" /></p><br>
                <p>Mod de passe : <input type="password" name="mot_de_passe" /></p>
                <p><div class="w3-center"><input type="submit" value="Valider" /></div></p>
            </form>
            <br>
        </div>
      </div>

    Elle m'envoie bien sur ma page d'administration. La page sommaire.php est bien intégrée si les codes sont bons, sinon, message d'info pour codes erronés. Voici le code de ma pages d'administration (Merci Cavo789 pour le debug) :
    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
    <?php
     
    if ( (($_POST['login'] ?? '') == 'toto') && (($_POST['mot_de_passe'] ?? '') ==  'toto') )
    {
        session_start();
        $_SESSION['auth'] = "ok";
        require 'sommaire.php';
     
    } else {
     
        ?> 
        <div class="w3-card-4 w3-margin w3-white">
        <div class="w3-container w3-center">
            <h1>Vous n'avez pas saisi les bons codes.</h1>
        </div>
        </div>
    <?php
    }
    ?>
    Ma page sommaire.php est du code HTML protégé par l'entête ci-dessous afin qu'on ne puisse pas y accéder en saisissant son adresse dans le navigateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
        session_start();
        if (empty($_SESSION['auth']))
        {
            header ('Location:http://www.monsite.org');
            exit();
        }
    ?>
    Cette page sommaire contient des liens vers d'autres pages qui sont toutes protégées par le même en-tête. Mais ces pages ne s'affichent pas, je suis redirigé vers la Location.

    Quelqu'un a une idée du problème ?
    Merci.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Bonjour,

    Après la ligne 2, ajoute var_dump($_SESSION['auth'];

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 11
    Par défaut
    Avec var_dump je vois que ma variable et ok dans le fichier sommaire.php mais elle est vide (NULL) dans ma deuxième page.

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

Discussions similaires

  1. Gestion des sessions avec applet
    Par Mister Nono dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/08/2006, 18h27
  2. [JSP] Gestion des sessions
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 28/06/2006, 10h44
  3. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h23
  4. gestion des sessions
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 22h09
  5. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25

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