Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2006, 11h03   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
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?
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h29   #2
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 31
Points : 14
Points : 14
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....
dilkas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h39   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
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...
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h44   #4
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
doit y avoir un truc avec le session.auto_start...
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 12h10   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 31
Points : 14
Points : 14
oui ou sur le temps d'ouverture par défaut de tes sessions ...
Citation:
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
dilkas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 12h52   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Code :
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 !
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h19   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 31
Points : 14
Points : 14
Arf comme quoi on apprend des choses rien qu'à échanger !
Citation:
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. !
dilkas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h25   #8
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
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.
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h34   #9
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
au fait

require_once n'a pas solutionné le pb non plus
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h43   #10
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
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.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h46   #11
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
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
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h52   #12
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Exemple : fichier A.php
Code :
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 :
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 ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 15h02   #13
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
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 !


Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 15h36   #14
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Merci d'utiliser les balises [code] pour éclaircir les messages.

Tu tournes avec php5 ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 15h39   #15
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2
Citation:
Envoyé par Mr N.
Merci d'utiliser les balises [code] pour éclaircir les messages.

Tu tournes avec php5 ?

non (4.3.10)
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 16h17   #16
Invité de passage
 
Inscription : septembre 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 14
Points : 2
Points : 2

'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
Tyramon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 14h34   #17
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 31
Points : 14
Points : 14
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 !
dilkas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h48.


 
 
 
 
Partenaires

Hébergement Web