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 :

[Sécurité] passer des variables et des classes en session


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut [Sécurité] passer des variables et des classes en session
    Bonjour,

    j'essaye en vain de faire passer une classe en session. J'ai lu plusieurs tutoriels et explications mais ça ne marche pas !!

    Je n'arrive même pas à faire passer une simple variable

    Voici mon code très simple:

    exemple1.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
     
     
    <?
     
    session_start(); // Démarre la session. Spécifie une id de session.
     
    $login="nom"; // On définit la variable classique $login
     
     
    echo "$login est registered";
     
    session_register("login"); // On enregistre $login dans la session
     
    echo "<br><a href=exemple2.php?".session_name()."=".session_id().">click</a>";
     
    ?>
    l'affichage est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nom est registered
    click
    exemple2.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
     
    // Ici $login et $password ne sont pas définis
     
    session_start();
     
    // Ils sont définis à partir d'ici.
    if(session_is_registered("login"))
    {
    	echo "le login est: $login";
    }
    ?>
    et l'affichage est:
    ce qui veut dire qu'il reconnait bien la variable de session mais elle n'a pas de valeur ?!!

    des idées ?

    merci

  2. #2
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    Salut,

    personnellement j'utilise la super globale $_SESSION pour accéder à mes variables de session.

    dans ton cas, ce serait .

    et ça fonctionne très bien pour les instances de classe.

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Essaye d'utiliser plutot ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $_SESSION['login'] = $login;
     
     
    et tu regarde si elle existe par
    if (isset($_SESSION['login'])) {
      echo $_SESSION['login'];
    } else {
      echo "pas definie";
    }
    EDIT: grilled

  4. #4
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    ok, de cette façon là, ça marche bien pour les variables. Mais comment faire pour les classes ?

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    chaque chose en son temps... une variable simple ca marche ?

  6. #6
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par Mr N.
    chaque chose en son temps... une variable simple ca marche ?
    pour les variables simples:
    $_SESSION["une_var"] = $une_var .... marche
    mais
    session_register("login") .. marche pas (cf exemple ci dessus)

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il faut que ta classe soit déclarée avant l'ouverture de la session.

  8. #8
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par Mr N.
    Il faut que ta classe soit déclarée avant l'ouverture de la session.
    oui ça veut dire que je dois inclure le fichier contenant la classe avant le début de la session de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include "cuser.inc";
    session_start();
    $s_user = new CUser();
    session_register("s_user");
    ...
    Mais ça ne marche pas non plus.

    Restons en aux variables simples avant de passer aux classes.

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    eeee tu viens de dire que ca marchais avec les variables simples
    Tiens essaye ce code :
    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
    <?php
     
    class Foo {
        var $id;
        function Foo($id) {
            $this->id = $id;
        }
    }
     
    session_start();
     
     
    echo '<pre>';
    var_dump($_SESSION);
    if (!isset($_SESSION['login'])) {
        $_SESSION['login'] = 1;
    } else {
        $_SESSION['login']++;
    }
     
    if (!isset($_SESSION['foo'])) {
        $_SESSION['foo'] = new Foo(23);
    } else {
        $_SESSION['foo']->id++;
    }
     
    echo $_SESSION['foo']->id;
    ?>
    si tu fais un refresh [F5], tu verra les compteurs évoluer. CQFD

  10. #10
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    je disais que que l'utilisation du tableau $_SESSION marchait pour les variables simples. Ce qui ne marche pas pour les var simples c'est le "session_register(..)".

    Bref,

    ton code, iol marche ..

    à quoi sert l'instruction
    var_dump($_SESSION);
    ?

  11. #11
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    bon, c'est bon ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['s_user'] = new CUser($user[1], $user[3]);
    cool

    en faite, je pensais qu'il fallait sérializer la classe avant de la mettre dans le tableau $_SESSION et la désérializer en la récupérant ...

    mais comme ça ça marche,

    merci à vous.[/code]

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    C'est fais automatiquement, comme dit dans la doc
    http://php.net/session

    et aussi dans la doc :
    http://php.net/var_dump
    8)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/08/2012, 18h10
  2. Faire passer des variables hors des functions ?
    Par Mister Paul dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/04/2012, 22h39
  3. taille des variables ou des objets?
    Par BobLBricoleur dans le forum Flash
    Réponses: 4
    Dernier message: 27/12/2005, 14h57
  4. Réponses: 3
    Dernier message: 19/12/2005, 13h39
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

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