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 :

objet en variable de Session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut objet en variable de Session
    Salut.

    Je passe un objet en variable de session.
    lorsque j'y accede ensuite, j'ai cette erreure:

    Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>garantie</b> of the object you are trying to operate on was loaded _before_ the session was started in ...... on line 13


    J'ai compris et vu en cherchant un peu qu'il fallait declarer les classes AVANT le session_start().
    J'ai bien mis mon require dans le bandeau haut de mes pages, avant toute ouverture de session, mais j'ai toujours l'erreur.
    Qqn peut me conseiller?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut
    Salut,

    Je me souviens avoir eu cette erreur un petit moment et il m'a fallu du temps pour me rendre compte que les déclarations des classes doivent être faites avant le session_start quand tu veux mettre des objets dans les sessions.
    Seulement, une fois mon require placé avant le session_start cela ne marchait toujours pas.
    Tout dépend le fonctionnement de ton application, mais je sais que j'ai pu remédier à ce problème en mettant require_once qui me garantissait que la déclaration était faite une fois, avant le session_start() et donc sans risque de trouver des déclarations après.
    Si ca peut t'aider....

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    Merci, je vai essayer.
    Ce que je trouve bizarre, c'est que j'avai également cette erreur:
    A session had already been started - ignoring session_start() in ../index.php on line 1

    Que j'ai contournée en mettant: @session_start()

    Sauf que quand je met un session_start au tout tout debut d'index.php, ba j'ai qd memme l'erreur. Du coup je voi pas comment je declare mes classes avant le session_start, si y'a TOUJOURS une session, mm au tout debut de index.php...

  4. #4
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    doit y avoir un truc avec le session.auto_start...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut
    oui ou sur le temps d'ouverture par défaut de tes sessions ...
    A session had already been started - ignoring session_start() in ../index.php on line 1
    Mais il semble bien que tu ais une session encore ouverte qui traine par là ... Tu as un endroit ou tu reset la session sur ton appli ??
    Parce que même si tas des formulaires sur plusieurs pages et que tu utilises beaucoup les sessions, tu mets le require_once direct apres ton <? sur ta premiere page et hopt !! ca marche ! Enfin moi je le vois comme ca sur mon projet, maintenant je n'ai pas la science infuse et il se peut très bien que je te sois d'aucune utilité

    Bon courage

  6. #6
    Expert confirmé 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A session had already been started - ignoring session_start() in ../index.php on line 1
    On peut voir cette fameuse ligne 1 ?
    Le "on line 1", c'est typiquement un problème d'encodage de ton fichier. Une histoire d'UTF-8 / ISO-machin-truc... Essaie de sauver dans un autre encodage.

    Citation Envoyé par Tyramon
    Que j'ai contournée en mettant: @session_start()

    Ne jamais, au grand jamais, masquer les erreurs !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut
    Arf comme quoi on apprend des choses rien qu'à échanger !
    Le "on line 1", c'est typiquement un problème d'encodage de ton fichier. Une histoire d'UTF-8 / ISO-machin-truc... Essaie de sauver dans un autre encodage.
    Je ne savais absolument pas et je dirais même que je ne m'en serais jamais soucié qu'un problème d'encodage pouvait être là dessous...
    Du coup je vais reprendre mes pages pour vérifier mes encodages s'ils ne sont pas bidons !

    Merci Mr N. !

  8. #8
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    je sais bien que @session_start c'est pas tres propre, et meme plutot dangereux, mais mon DSi a décidé de faire comme ca et qu'il fallait avancer... alors bon...

    sinon la ligne 1 c'était ca:
    <?php session_start() ?>

    mais j'ai aussi essayé ca:
    <?session_start()?>
    ca:
    <?php
    session_start()
    ?> (qui me donne l'erreur ligne 2, evidement...)


    J'ai pensé session.auto_start de php.ini, mais il est pas activé.
    l'interet d'utiliser des objets est tres limité si je peux pas les passer en session.
    Enfin bon, je vai avancer sans mettre d'objets en session, ca va etre tout moche, mais j'ai un objectif a atteindre pour ce soir, et je doit avancer.

    en tout cas merci, je vai continuer a chercher la solution quand meme, en paralelle.

  9. #9
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    au fait

    require_once n'a pas solutionné le pb non plus

  10. #10
    Expert confirmé 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
    Par défaut
    Quand tu as un problème comme ça, le mieux est de faire un test sur un minifichier à part.

    Tu te crée une classe bidon, un script qui met une instance de bidon en session et tu regardes si ça roule. Sinon tu es forcément perturbé par le reste du code.

  11. #11
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    ouia, tu as sans doute raison Mr N.
    C'est la meilleure soltuoin pour se faire un idée claire du probleme.
    Je ferai ca quand j'aurai un peu de temps

    merci

  12. #12
    Expert confirmé 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
    Par défaut
    Exemple : fichier A.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
    <?php
     
    require_once("B.php");
     
    session_start();
     
    if (isset($_SESSION['mon_objet'])) {
        echo "La session contient un objet <pre>";
        var_dump($_SESSION['mon_objet']);
        echo '</pre>';
     
        echo "Suppression de l'objet de la session...";
        unset($_SESSION['mon_objet']);
        echo " done.<br>";
        echo "Rafraichissez la page pour voir !";
    } else {
        echo "Pas d'objet en session !<br>";
     
        echo "Creation et mise en session de l'objet...";
        $_SESSION['mon_objet'] = new Bidon('666');
        echo " done.<br>";
        echo "Vous pouvez rafraichir la page.";
    }
     
    ?>
    Fichier B.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    class Bidon {
        var $id;
        function Bidon($id) {
            $this->id = $id;
        }
    }
     
    ?>
    Ca roule pour moi... Et toi ?

  13. #13
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    Bin moi j'ai ca:


    Notice: A session had already been started - ignoring session_start() in c:\developpement\dev\marc\a.php on line 5
    Pas d'objet en session !
    Creation et mise en session de l'objet... done.
    Vous pouvez rafraichir la page.


    et apres le refresh:

    Notice: A session had already been started - ignoring session_start() in c:\developpement\dev\marc\a.php on line 5
    La session contient un objet
    object(__PHP_Incomplete_Class)(2) {
    ["__PHP_Incomplete_Class_Name"]=>
    string(5) "bidon"
    ["id"]=>
    string(3) "666"
    }

    Suppression de l'objet de la session... done.
    Rafraichissez la page pour voir !



  14. #14
    Expert confirmé 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
    Par défaut
    Merci d'utiliser les balises [code] pour éclaircir les messages.

    Tu tournes avec php5 ?

  15. #15
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut
    Citation Envoyé par Mr N.
    Merci d'utiliser les balises [code] pour éclaircir les messages.

    Tu tournes avec php5 ?

    non (4.3.10)

  16. #16
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut

    'tain, maintenant, c'est par le formulaire que ca plante.
    J'envoie un objet, et dans mon $_REQUEST je recupere un string(6) "Object"



    Bon ba je v faire des tableaux tous pourris

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut
    J'ai pas suivi ton post depuis un moment ....
    Mais par simple curiosité (et en fait pour que je connaise un peu mieux ce qui peux m'attendre sur ces sessions!), as tu solutionné ton problème ??

    Pour la string "Objet", je dirais que tu ne mets pas le bon champs dans ton $_REQUEST.
    Quand tu récupères "objet" dans $_REQUEST[indice], bien souvent dans le champ $_REQUEST[indice+1] tu as ce que tu veux !

Discussions similaires

  1. Objet en variable de session
    Par r83 dans le forum Langage
    Réponses: 8
    Dernier message: 09/01/2009, 09h57
  2. variable de session dans un objet
    Par ben53 dans le forum Langage
    Réponses: 4
    Dernier message: 24/01/2007, 18h51
  3. Mettre un objet dans une variable de session
    Par dondano dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2006, 23h07
  4. Réponses: 19
    Dernier message: 03/02/2006, 00h30

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