Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hi, habe ein kleines problem mit sessions

<?php
require_once('local.inc');
require_once('classes/system.class');

session_start();

if(isset($_SESSION['sys'])) {
$sys = $_SESSION['sys'];
echo "aus session";
}
else {
echo 'neu erzeugt'
$sys= new System($local);
$_SESSION['sys']=$sys;
}
echo session_id();
?>[/PHP]

meinem verständniss nach müsste beim ersten aufruf der seite "neu erzeugt" ausgegeben werden, funktioniert auch soweit...

beim zweiten aufruf sollte die session id identisch sein mit der vom ersten durchlauf, sind sie auch...

nur die ausgabe "neu erzeugt" habe ich beim zweiten aufruf nicht erwartet, da dann ja ein objekt in $_SESSION['sys'] sein müsste

der pfad zu den mit require once eingebundenen dateien ist richtig

die klasse(schon getestet) System gibt in __construct nur den parameter $local mit print_r aus (das array $local steht in der datei local.inc)

meine frage ist nun nicht, ob es sinn macht sessions so zu verwenden, ich wunder mich nur das php sich da nicht so verhält wie ich es erwartet hab und würde gern wissen warum dem so ist

aja meine meine php version ist 5.3.1 falls wichtig ist...

Geschrieben

nur die ausgabe "neu erzeugt" habe ich beim zweiten aufruf nicht erwartet, da dann ja ein objekt in $_SESSION['sys'] sein müsste

vllt nicht ganz klar geworden, das ist mein problem

Geschrieben
vllt nicht ganz klar geworden, das ist mein problem

Das steht etwas von "müsste", das sieht vom Syntax her korrekt aus, ich gehe einmal davon aus, dass es aber nicht funktioniert, also wäre es Deine Aufgabe, das Problem konkret zu beschreiben. Du sollst nicht das beschreiben was Du denkst, sondern das was konkret (nicht) funktioniert

Geschrieben

ok dann ganz konkret der fehler: in $_SESSION['sys'] ist beim zweiten aufruf kein objekt, obwohl es beim ersten aufruf erzeugt und in der session gespeichert (mit print_r geprüft!) wurde

Geschrieben

Hast Du mal ins error.log geschaut ob dort ein Warning oder ein Fehler angezeigt wird. Alternativ schau Dir die Sessiondatei auf dem Server an, da müsste dann zur passenden SessionID eine entsprechende Datei vorhanden sein, in der das serialisierte Objekt steht

Geschrieben

ich habe einfach mal noch ein bisschen rumprobiert und hab dabei etwas entdeckt...

in der System - Klasse habe ich eine funktion:


function __wakeup() {
echo "huhu";
}
[/PHP]

wenn ich diese auskommentiere funktioniert es einwandfrei.

die funktion war nur als grundgerüst da, um später die mysqli neu zu erzeugen

nun habe ich ein neues problem:

"__wakeup" geht nicht...

habe es auch schon versucht indem für das objekt serialize()/unserialize() wenn ich es in die session schreibe bzw wieder raus hole, hat aber auch nicht geholfen

Geschrieben
hi, habe ein kleines problem mit sessions

<?php
require_once('local.inc');
require_once('classes/system.class');

session_start();

if(isset($_SESSION['sys'])) {
$sys = $_SESSION['sys'];
echo "aus session";
}
else {
echo 'neu erzeugt'
$sys= new System($local);
$_SESSION['sys']=$sys;
}
echo session_id();
?>[/PHP]

meinem verständniss nach müsste beim ersten aufruf der seite "neu erzeugt" ausgegeben werden, funktioniert auch soweit...

beim zweiten aufruf sollte die session id identisch sein mit der vom ersten durchlauf, sind sie auch...

nur die ausgabe "neu erzeugt" habe ich beim zweiten aufruf nicht erwartet, da dann ja ein objekt in $_SESSION['sys'] sein müsste

der pfad zu den mit require once eingebundenen dateien ist richtig

die klasse(schon getestet) System gibt in __construct nur den parameter $local mit print_r aus (das array $local steht in der datei local.inc)

meine frage ist nun nicht, ob es sinn macht sessions so zu verwenden, ich wunder mich nur das php sich da nicht so verhält wie ich es erwartet hab und würde gern wissen warum dem so ist

aja meine meine php version ist 5.3.1 falls wichtig ist...

du muß session_start(); ganz, ganz oben als aller erstes schreiben... bevor irgendwas anderes kommt

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...