Objekte in Session gehen verloren.
Bobby
- php
Moin
ich versuche ein Objekt in eine Session zu speichern und auf eine nächste Seite zu übergeben. Leider geht das Objekt bei jedem Seitenwechsel verloren. Leider habe ich nach langem Googeln und Archivstöbern nix gefunden.
In einem Objekt habe ich folgende Funktion zum Speichern eines Objektes (artikel) in die Session eingefügt:
for ($i=0;$this->ID[$i];$i++)
{
$art=new artikel();
$art->ID=$this->ID[$i];
$art->Menge=$_POST[$this->ID[$i]];
$art->Preis=$this->Preis[$i];
$art->Beschreibung=$this->Beschreibung[$i];
$_SESSION[$i]=$art;
}
serialize ist auf auto, sodass ich mich darum ja nicht mehr kümmern brauch. Auf der selben Seite gebe ich die Session mit print_r (testweise) wieder aus und da funktioniert es. alle Werte sind wie gewünscht da:
Array
(
[time] => 1173174641 ////Diese Variable ist zu Testzwecken da
[0] => artikel Object
(
[ID] => 1
[Menge] => 2
[Preis] => 10.8
[Beschreibung] => blablanbla1
)
[1] => artikel Object
(
[ID] => 2
[Menge] => 3
[Preis] => 10.8
[Beschreibung] => blablanbla2
)
[2] => artikel Object
(
[ID] => 3
[Menge] => 4
[Preis] => 10.8
[Beschreibung] => blablanbla2
)
)
sobald ich nun die Seite wechsel und natürlich session_start() ausführe ist in der Session plötzlich das Objekt verschwunden:
Array ( [time] => 1173174909 )
Kann mir jemand sagen woran das liegt? bin echt ratlos.
Gruß Bobby
Moin,
ANMERKUNG: Auf dem Server ist PHP 5.1.2 installiert.
Gruß Bobby
echo $begrüßung;
ich versuche ein Objekt in eine Session zu speichern und auf eine nächste Seite zu übergeben. Leider geht das Objekt bei jedem Seitenwechsel verloren.
for ($i=0;$this->ID[$i];$i++)
$_SESSION[$i]=$art;
Das ist kein Problem mit Objekten, sondern mit den Schlüsseln, mit denen du das Objekt - oder allgemeiner eine Variable, denn es ist mit jedem anderen Typ nachvollziehbar - in die Session abzulegen versuchst. Sie müssen den Regeln eines Variablennamen entsprechen und dürfen also nicht mit Ziffern beginnen, oder nur aus ihnen bestehen. Natürlich kannst du stattdessen so etwas wie
$_SESSION['objekte'][$i] = ...
oder
$_SESSION['objekte'] = array(...)
verwenden.
echo "$verabschiedung $name";
Moin
$_SESSION['objekte'][$i] = ...
Danke für die Lösung dieses, wie sich herausgestellt hat, doch recht simplen Problems.
Gruß Bobby