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 :

Problème de sessions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut Problème de sessions
    Bonsoir tout le monde !

    j'ai un formulaire qui me permet de saisir l'identifiant et le mot de passe avec deux case à cocher : mémoriser l'identifiant et mémoriser le mot de passe (pour lesquelles j'ai utilisé les cookies).
    Mon problème c'est que lorsque je ne coche pas ces deux cases, la session ne se crée pas, et donc je ne peux pas passer à une autre page (je reviens à la page d'index pour me connecter à nouveau). Quand je les coche ces deux cases, il n'y a aucun problème.

    voilà l'entête de la page d'accueil où je vérifie l'authentification :

    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
     
    <?php
    session_start();
     
    if (isset($_POST['identifiant']) and isset($_POST['mot_de_passe']) and $_POST['identifiant']!=NULL and $_POST['mot_de_passe']!=NULL) {
     
       $_SESSION['identifiant'] = $_POST['identifiant'];
       $_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
     
       if (isset($_POST['memoriser_identifiant'])){
          $expire = 7*24*3600;
           setcookie('identifiant',$_POST['identifiant'],time() + $expire); 
       }
       else{
          setcookie('identifiant');
       }
       if (isset($_POST['memoriser_mot_de_passe'])){
          $expire = 7*24*3600;
           setcookie('mot_de_passe',$_POST['mot_de_passe'], time() + $expire); 
       }
       else{
           setcookie('mot_de_passe');
       }
    }
     
    else if (isset($_COOKIE['identifiant']) and isset($_COOKIE['mot_de_passe']))
    {
       $_SESSION['identifiant'] = $_COOKIE['identifiant']; 
       $_SESSION['mot_de_passe'] = $_COOKIE['mot_de_passe'];
    }
     
    if (empty($_SESSION['identifiant']) or empty($_SESSION['mot_de_passe'])) { 
       ?>   
       <script language="javascript">
          alert("Vous n'avez pas l'autorisation pour voir cette page ! Vous allez être redirigé vers l'index pour vous connecter ...");
          document.location = "index.php";
       </script>
       <?php
    }
    else
    {
    //Connection à la base de donnée pour vérifier l'identifiant et le mot de passe
    //Si c'est bon on affiche la page d'accueil
    //.....
     
    }
    ?>
    une remarque à propos cette page d'accueil, c'est la page principale du site, elle contient beaucoup de "include()" avec des tests if() selon la page à afficher. est-ce que je dois réécrire le code que j'ai présenté ci-dessus dans toutes ces pages que j'inclus ?

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bonsoir,

    Ne fais pas la session par rapport aux cookies mais à la saisie utilisateur ($_POST)
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut
    la session je ne la fait à partir des cookies que si l'utilisateur n'as pas saisi l'identifiant et le mot de passe.

    je vais reprendre le code en ajouter des commentaires :


    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
     
     
    <?php
    //demarrage de la session
    session_start();
     
    //Si le visiteur a saisi l'identifiant et le mot de passe, on les stock dans des
    // variables de session :
     
    if (isset($_POST['identifiant']) and isset($_POST['mot_de_passe']) and $_POST['identifiant']!=NULL and $_POST['mot_de_passe']!=NULL) {
     
       $_SESSION['identifiant'] = $_POST['identifiant'];
       $_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
     
       //si le visiteur a coché la case pour memoriser l'identifiant on enregistre ce
       //dernier dans une cookie
       if (isset($_POST['memoriser_identifiant'])){
          $expire = 7*24*3600;
           setcookie('identifiant',$_POST['identifiant'],time() + $expire); 
       }
     
       //Sinon, on détruit cette cookie si elle existe déjà 
       else{
          setcookie('identifiant');
       }
     
       //Meme traitement si le visiteur a cocher l case pour memoriser le mot de
       //passe ou pas
     
       if (isset($_POST['memoriser_mot_de_passe'])){
          $expire = 7*24*3600;
           setcookie('mot_de_passe',$_POST['mot_de_passe'], time() + $expire); 
       }
       else{
           setcookie('mot_de_passe');
       }
    }
     
     
    //Maintenant si l'utilisateur n'as rien saisi pour l'identifiant et le mot de passe
    //on vérifie s'il y a des cookies déjà créées, càd l'utilisateur a choisi dans sa
    // connexion précedente de mémoriser son identifiant et mot de passe. alors,
    // là on crée la session à partir de ces cookies. 
    else if (isset($_COOKIE['identifiant']) and isset($_COOKIE['mot_de_passe']))
    {
       $_SESSION['identifiant'] = $_COOKIE['identifiant']; 
       $_SESSION['mot_de_passe'] = $_COOKIE['mot_de_passe'];
    }
     
    //ici on vérifie est ce que la session est créée ou non, c'est la partie qui
    // détermine si on a l'autorisation de visualiser la page ou non.
    if (empty($_SESSION['identifiant']) or empty($_SESSION['mot_de_passe'])) { 
       ?>   
       <script language="javascript">
          alert("Vous n'avez pas l'autorisation pour voir cette page ! Vous allez être redirigé vers l'index pour vous connecter ...");
          document.location = "index.php";
       </script>
       <?php
    }
    else
    {
    //Connection à la base de donnée pour vérifier l'identifiant et le mot de passe
    //Si c'est bon on affiche la page d'accueil
    //.....
     
    }
    ?>

    Si vous avez une autre manière de créer la session différente de la mienne.. veuillez me la présenter, parce que là j'ai mal à la tete ... je ne vois pas où est l'erreur !!

    en tout cas, merci beaucoup pour votre attention.

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Hum... Désolée... Effectivement j'étais complètement à coté de la plaque.
    Autant pour ta question que la réponse que j'ai fournie.

    Si tu souhaites que tes pages soient "sécurisées" (espace membre) par ce dispositif, oui tu vas devoir le répéter à chaque début de page.

    Pour ce faire, je te propose de le mettre dans une page php ou tu utiliseras un include
    Par contre, je ne vois pas actuellement le problème...

    Je n'arrive pas à comprendre ton erreur...
    En tout cas, (puisque tu as dis que tu as saisie les valeurs identifiant et mot de passe) tu devrais avoir tes variables sessions de renseignées...
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 10h54
  2. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 11h08
  3. Problème de session
    Par meda dans le forum Langage
    Réponses: 13
    Dernier message: 25/10/2005, 19h25
  4. problème de session en cours
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 15h36
  5. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 10h21

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