Objekte übergeben per Session
Norbert
- php
Hallo,
ich bin kurz vor dem verzweifeln. 3 Tage bastel ich schon daran rum und bekomme es einfach nicht auf die Reihe. Folgendes Problem, und ich hoffe es kann mir jemand helfen.
computerinformation.php
***********************
include_once 'classes/class_computer.php';
...
$_SESSION['pc'] = new Computer("Norbert");
(Der Konstruktor erwartet einen Namen für den Computer ;-) )
Nun gibt es irgendwo einen Link auf die Seite:
editComputer.php
In dieser Datei wollte ich jetzt per
print $_SESSION['pc'] -> getName();
Den Namen ausgeben lassen, aber es kommt immer folgende Fehlermeldung:
main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Computer" 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
Im Internet wird so viel rum diskutiert und erklärt, aber alles hilft irgendwie nicht.
Folgende Sachen habe ich schon versucht:
- Verona Feldbusch angerufen ... Sie meinte der BLubb fehlt
- session_start(); in jede Datei geschrieben
- include_once durch require_once und ohne once ausprobiert
- include/require auch in die editComputer.php geschrieben
- session_start() vor und hinter include/require
- __autoload() funktion geschrieben
Was aber geht ist, wenn ich
print $_SESSION['pc'] -> getName();
in die computerinformation.php schreibe.
DIe komplette Alternative dazu war mit serialize zu arbeiten und dann im Link per GET zu schieben. Hatte aber zwei Nachteile:
Habe aber auch gehört, dass es nicht so toll sein soll das mit dem Link zu machen. In der Session wäre es perfekt.
Also kann mir bitte jemand helfen, bevor ich hier einen Anfall bekomme? Und bitte nicht auf php.net oder so verweisen, das habe ich schon alles durchgelesen. :-)
Ich versuche mal ein Minimalbeispiel zu erstellen
Danke
Norbert
hi,
In dieser Datei wollte ich jetzt per
print $_SESSION['pc'] -> getName();
Den Namen ausgeben lassen, aber es kommt immer folgende Fehlermeldung:
main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Computer" 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
Und, hast du das gemacht?
Die Definition der Klasse also auch in dieser Datei wieder eingebunden, _bevor_ du die Session wieder aufnimmst?
gruß,
wahsaga
Problem ist selbst behoben.
Es lag nur daran, dass ich erst andere Files included hatte und dann die class_computer.php
Ich habe jetzt
include_once 'class/class_computer.php';
session_start();
include 'xyz.php'
....
(auf der 2. Seite)
Auf der 1. Seite habe ich kein Session_start();
Irgendwie komisch, aber vielleicht braucht das nochmal irgendwann irgendwer :-)
Danke trotzdem für eure Zeit
Hallo,
Folgende Sachen habe ich schon versucht:
- Verona Feldbusch angerufen ... Sie meinte der BLubb fehlt
Warum hast du nicht erst noch Heidi Klum angerufen,vielleicht hätte sie es gewußt?
gruß aus Hosena