Session speicherts nicht
stiller
- php
Hallo
Aus mir unerklährlichen Gründen funktioniert auf einem Domain welcher auf dem Hoster netfirms.com gespeichert ist das PHP-Session Handling nicht mehr. Ich setze ganz normal Werte mit
session_start();
$_SESSION["SPRACHE"] = "DE";
doch wenn ich sie auf einer anderen Seite mit
session_start();
print "LG: ".$_SESSION["SPRACHE"];
abrufen will wird nix angezeigt.
Auf dem Hoster läuft PHP 5.2.17 (http://www.simoneott.com/phpinfo.php).
Kann mir jemand helfen woran das liegen könnte oder wie ich das beheben kann. PS: Hoster wechseln geht leider nicht;-)
Danke für eure Hilfe.
Gruss
Thomas
Tach!
doch wenn ich sie auf einer anderen Seite mit
session_start();
print "LG: ".$_SESSION["SPRACHE"];
> abrufen will wird nix angezeigt.
Wenn selbst das "LG:" nicht angezeigt wird, muss vorher ein Scriptabbruch erfolgen, zum Beispiel durch einen fatalen Fehler beim Aufruf der Funktion session\_start(). Den sollte es nur geben, wenn sie nicht vorhanden ist.
> Kann mir jemand helfen woran das liegen könnte oder wie ich das beheben kann.
Vor die Frage des Behebens kommt die Ursachenforschung. Da wären mal die einfachen grundlegende Dinge wie phpinfo() befragen, ob der Session-Block drin ist, eine Kontrollausgaben mit var\_dump($\_SESSION), ob $\_SESSION überhaupt was da ist, Kontrolle der HTTP-Headers, ob Session-Cookies gesetzt und zurückgesendet werden, also alle Dinge kontrollieren, die für den Session-Betrieb benötigt werden.
dedlfix.
Hallo
doch wenn ich sie auf einer anderen Seite mit
session_start();
print "LG: ".$_SESSION["SPRACHE"];
> > abrufen will wird nix angezeigt.
>
> Wenn selbst das "LG:" nicht angezeigt wird, muss vorher ein Scriptabbruch erfolgen, zum Beispiel durch einen fatalen Fehler beim Aufruf der Funktion session\_start(). Den sollte es nur geben, wenn sie nicht vorhanden ist.
Das LG wird schon angezeigt.
>
> > Kann mir jemand helfen woran das liegen könnte oder wie ich das beheben kann.
>
> Vor die Frage des Behebens kommt die Ursachenforschung. Da wären mal die einfachen grundlegende Dinge wie phpinfo() befragen, ob der Session-Block drin ist, eine Kontrollausgaben mit var\_dump($\_SESSION), ob $\_SESSION überhaupt was da ist, Kontrolle der HTTP-Headers, ob Session-Cookies gesetzt und zurückgesendet werden, also alle Dinge kontrollieren, die für den Session-Betrieb benötigt werden.
>
phpinfo habe ich angeschaut (siehe auch [link](http://www.simoneott.com/phpinfo.php)). Session-Block ist vorhanden. Var-Dump gibt nur array(0) { } aus. Mehr habe ich nicht kontrolliert, leider fehlt mir das wissen darum mein eintrag hier..
Gruss
Thomas
Tach!
Das LG wird schon angezeigt.
Also doch nicht "nix", womit das Fehlerbild gleich viel freundlicher wird. Ansonsten hätte ich mir nur die gewaltsame Entfernung der Session-Extension vorstellen können und das würde vermutlich kein Hoster wagen, der Kunden haben will.
phpinfo habe ich angeschaut (siehe auch link). Session-Block ist vorhanden. Var-Dump gibt nur array(0) { } aus. Mehr habe ich nicht kontrolliert, leider fehlt mir das wissen darum mein eintrag hier..
Ich kann auch nicht hellsehen, deswegen muss ich dir die Fragen stellen, deren Antworten ich sonst aus dem fehlerhaften System zu holen versucht hätte. Dass du sie nicht selbst finden kannst, ist nicht weiter tragisch. Dann muss ich dir soviel Wissen zu den Fragen mitgeben, dass du damit die Antworten findest. Das phpinfo() kann ich nicht aufrufen, das bringt einen 500er Fehler. Aber egal, wenn du sagst, dass "Session" gelistet wird, glaub ich dir das. Machen wir mal weiter.
Das die Session funktionieren kann, brauchst es die Übertragung der Session-ID zum und vom Browser. Jeder (der großen 4 modernen) Browser hat Tools an Bord, mit denen man den HTTP-Verkehr, also Request und Response anzeigen kann. Firefox zum Beispiel hat die Webkonsole, aber mir gefällt die livehttpheaders-Extension besser. Im Zweifelsfall frag eine Suchmaschine nach "browsername view http headers", wie du sie dir anzeigen lassen kannst. Wie auch immer, du musst da nachschauen, was beim ersten session_start() als Response kommt. Da muss ein Cookie mit dem Namen PHPSESSID gesetzt werden - zumindest wenn die Session-Konfiguration auf Default steht (session.use_cookies, session.use_only_cookies). Beim nächsten Aufruf muss der Browser dieses Cookie wieder mitsenden.
Weiterhin kannst du mal nach den beiden session_start()s die session_id() ausgeben lassen (mit echo). Wenn alles richtig abläuft, sollte die gleich bleiben. Wenn die ID auf dem Weg zwischen Server, Browser und wieder zurück verlorengeht, ist sie unterschiedlich, weil der zweite Aufruf eine neue erzeugt.
dedlfix.