Callam Geschrieben 12. Juli 2010 Geschrieben 12. Juli 2010 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... Zitieren
flashpixx Geschrieben 12. Juli 2010 Geschrieben 12. Juli 2010 hi, habe ein kleines problem mit sessions und welches Problem hast Du konkret? Zitieren
Callam Geschrieben 13. Juli 2010 Autor Geschrieben 13. Juli 2010 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 Zitieren
flashpixx Geschrieben 13. Juli 2010 Geschrieben 13. Juli 2010 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 Zitieren
Callam Geschrieben 13. Juli 2010 Autor Geschrieben 13. Juli 2010 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 Zitieren
flashpixx Geschrieben 13. Juli 2010 Geschrieben 13. Juli 2010 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 Zitieren
Callam Geschrieben 14. Juli 2010 Autor Geschrieben 14. Juli 2010 in der session datei steht nur: sys|N; und in der errorlog ist auch nichts Zitieren
Callam Geschrieben 14. Juli 2010 Autor Geschrieben 14. Juli 2010 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 Zitieren
etreu Geschrieben 19. Juli 2010 Geschrieben 19. Juli 2010 Du hast bestimmt auch __sleep() nur Gerüst enthalten, oder? Dann schau mal hier nach: PHP: Magic Methods - Manual und den Rückgabewert von isset: http://de.php.net/manual/en/function.isset.php Zitieren
fisianer2009 Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 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 Zitieren
Empfohlene Beiträge
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.