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 :

Utiliser k_session ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut Utiliser k_session ?
    Salut à tous,

    Je suis en train d'essayer d'utiliser la class k_session disponible ici

    Malheuresement, elle ne fonctionne pas chez moi:
    - Je ne peut pas faire de $session->enabled(); comme expliqué puisque cette méthode n'éxiste pas
    - Je ne peut plus mettre d'objet en session ($_SESSION['toto'] = new objet(); ), aucun message d'erreur n'est affiché mais je ne peut pas l'utiliser
    - Je ne peut pas faire de session_destroy() sinon j'ai ce message: "Trying to destroy uninitialized session in ..." alors que la session est bien initalisée avant.

    Voila, merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par orochimaru
    - Je ne peut pas faire de session_destroy() sinon j'ai ce message: "Trying to destroy uninitialized session in ..." alors que la session est bien initalisée avant.
    Salut

    Déjà, si tu obtiens ce warning, c'est que ta session n'est pas initalisée, justement.
    Tu ne peux détruire qu'une session existante, dans le cas contraire, c'est assuremment ce type de message qui te sera renvoyé.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Voici le code qui me met cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    require('../includes/fonctions.inc.php5');
     
    $session = new k_session();
     
    /* Déconnexion */
    $_SESSION['user']->loggue = FALSE;
    unset( $_SESSION['user'] );
    session_destroy();
    /* utilisation de l'URL absolue pour la redirection vers la page d'authentification */
    header("Location: http://" . $_SERVER['HTTP_HOST']
        . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
        . "/index.php5?msg=2");
    ?>
    La session est bien initialisée.

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Il n'y a rien dans ce code qui prouve que ta session est initialisée ?

    Essaye plutôt pour le vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ( isset( $_SESSION['user']))
     {
       echo $_SESSION['user'] ;
    } 
    else {
      echo 'Variable non initailisée' ;
    }
    De plus, cette ligne ne me semble pas logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unset( $_SESSION['user'] );
    session_destroy();
    Forcemment, si ta session ne comprend que la variable $user, tu supprimes cette variable avant de détruire la session compléte.
    Donc....y a plus rien à supprimer...d'où message d'erreur.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Ok, cela me sort "Variable non initailisée"

    Pourtant le contructeur de la class k_session possède un sesion_start()...

    J'ai l'impression que c'est la class qui change l'id de la session a chaques fois...

  6. #6
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    J'ai rajouté un commentaire dans mon message précédent. lloll

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    En enlevant le session_destroy() je n'ai effectivement plus de message d'erreur, mais les sessions ne fonctionnent toujours pas, les variables ne sont pas passées entres les pages

    Voici comment sont faites les pages de mon site:
    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
    <?php
     
    require('../config.php5');
    require('../includes/fonctions.inc.php5');
     
    $session = new k_session();
     
    $bdd  = new mysql($sql['host'], 
                              $sql['user'], 
    	                  $sql['pwd'], 
    	                  $sql['db'] );
     
    if ( !isset($_SESSION['user']) )
    {
        /* mises en session de l'objet user */
        $_SESSION['user'] = new user($_POST['pseudo'], $_POST['pwd']);
     
        /* connexion de l'utilisateur */
        $_SESSION['user']->login($bdd);
    }
     
    if( !$_SESSION['user']->loggue ) 
    {
        $_SESSION['user']->loggue = FALSE;
        session_unset();
        /* utilisation de l'URL absolue pour la redirection vers la page d'authentification */
        header("Location: http://" . $_SERVER['HTTP_HOST']
                   . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                   . "/index.php5?msg=1");
    }
     
    [...]
     
    ?>
    Quand j'utilise les sessions normales je n'ai pas de problemes, quand j'utilise la class, la condition if( !$_SESSION['user']->loggue ) est toujours remplie donc je suis redirigé vers la page d'identification

  8. #8
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Citation Envoyé par orochimaru
    ....... les variables ne sont pas passées entres les pages..........

    Tu as un :
    au debut des pages qui traitent ces variables ?

    Et pourquoi encore cette ligne ?

    Tes variables ne peuvent pas passer de cette façon ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Le session_start() est dans le contructeur de la class k_session

  10. #10
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    D'accord, mais tes autres pages y font référence ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    oui, chaques pages se présente comme celle décrite plus haut, il y a donc un $session = new k_session() au début de chaques pages

  12. #12
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Je pense que la meilleure solution, c'est de faire des test au fil des lignes de ton script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ( isset( $_SESSION['user']))
     {
       echo $_SESSION['user'] ;
    } 
    else {
      echo 'Rien' ;
    }
    Celà te permettrait de localiser le monceau de script incriminé

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Déja tésté, ca affiche toujours rien meme quand c'est placé juste apres la création de l'objet d'ou mon doute sur le fonctionnement de la class, y'a un truc que j'ai pas du comprendre

  14. #14
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Si je traduis ci-dessous:
    Si user n'est pas défini, tu le mets en session...en l'ocurrence, rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ( !isset($_SESSION['user']) )
    {
        /* mises en session de l'objet user */
        $_SESSION['user'] = new user($_POST['pseudo'], $_POST['pwd']);
     
    //.............

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Oui enfin la c'est le cas de la page qui est juste apres l'identification, je récupère les $_POSTE des loggin et password pour identifier l'utilisateur
    $_SESSION['user']->login($bdd) met $_SESSION['user']->loggue à FALSE si l'identification à échoué (et à TRUE si elle a reussie) et donc dans ce cas on est redirigé vers l'authentification.

    Mais cette condition n'apparait pas sur les autres pages, je l'ai mise ici juste pour expliquer le principe

    Le code fonctionne bien lorsque j'utilise l'habituel session_start() au lieu de la class.

  16. #16
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    ok !

    Ce qui m'échappe, c'est que tu ne puisses récupérer un quelconque echo de cette variable (?)
    Ou elle n'est pas mise en session, ou bien c'est à cause du timeout trop court.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Et bien moi aussi cela m'échappe
    Le timout est de 10 secondes normalement (dans la class il y a private $concurrency_timeout = 20

    ps: j'ai oublié de dire que j'ai un chouilla adapté la class à php5 en mettant __contruct() au lieu de k_session() et private au lieu de var mais je ne pense pas que cela soit genant.

  18. #18
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    C'est pas génant de changer les intitulés, à condition de garder les mêmes partout et sur toutes les pages.
    Par contre, il n'y a pas de spec particulières pour user de sessions sous php5 ?
    Je pose juste la question car j'avais déjà été confronté à ce probléme entre les version 3 & 4, qui sont 2 approches différentes.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Oui entre php 3 & 4 les sessions etaient differents, mais dans le 5 il n'y a pas de difference (à ma connaissance)

  20. #20
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Si on fait abstraction des variables elles-mêmes, ce serait peut-être interressant de vérifier le statut de la session dans différentes parties du script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $session = new k_session();
    $Session_ID = session_id();
    Et la ligne de vérification dans différentes parties du script :

    C'est à mon avis, la manière la plus efficace pour vérifier son existence, sans se référer aux variables qui devraient l'accompagner.
    Si cet id de session est accessible, les variables associées devraient l'être aussi.
    Dans ce cas, le probléme pourrait venir du transfert des variables, ou du non-enregistrement de ces variables dans cette même session.
    Faut voir

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 15h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 13h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 17h01
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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