Bonjour j'ai un soucis apparement lié à l'utilisationd'un objet comme variable de session.
Quand après l'attribution, je réutilise l'objet plus tard dans la session j'ai droit à ce joli mais obscure message :
The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "gestionnaireSels" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in G:\test\site\LOGIN.php on line 56
voici ma classe :
et voici l'apelle
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 class gestionnaireSels { // toujours trié dans l'ordre croissant des dates // lesSels[x] avec x N+ // lesSels[x] = array (key (time) => val (sel)) var $lesSels; function gestionnaireSels() { $this->lesSels = array(); } // ajotue un sel, en faisant de l'espace si nécessaire // renvoie la paire indice (x) val (sel) function addSel() { $this->dropSelsPerimes(); if (count($this->lesSels) == MAX_SELS) { array_shift($this->lesSels); } $pos = count($this->lesSels); $key = time(); $val = $this->genereSel(); echo($pos." : ".$key." ".$val."<br>"); $this->lesSels[$pos] = array($key => $val); return array($pos => $val); } // génère un grain de sel function genereSel() { $num = mt_rand(); return md5($num); } function getSel($key) { if (array_key_exists($key,$this->lesSels)) return $this->lesSels[$key]; return NULL; } function getSelNonPerimes($key) { $this->dropSelsPerimes(); return getSel($key); } // parcours tout les éléments périmés et les supprime function dropSelsPerimes() { echo("<br>XX"."-"."XX<br>"); reset($this->lesSels); while (list($key,$val) = each($this->lesSels)) { echo("<br>XX"."O"."XX<br>"); $x = current($val); $time = intval( $x[0] ); echo("<br>XX".$time."XX<br>"); if ($time >= (time() + PEREMPTION_SEL)) { unset($this->lesSels[$key]); } else break; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if (!array_key_exists("sels",$_SESSION)) $_SESSION["sels"] = new gestionnaireSels(); list($selKey,$selVal) = current( $_SESSION["sels"] -> addSel() );








Répondre avec citation
Partager