![]() |
Sessionabbruch?
Hallo,
ich habe folgendes Problem: Ich startet bei Aufruf einer Homepage eine Session und hinterlege eine Variable: <?php session_start(); $_SESSION['Test'] = "TEST"; ?> Anschließend wird automatisch eine neue Seite aufgerufen, die die Variable anzeigt: <?php session_start(); echo $_SESSION['Test']; ?> Wenn ich jetzt aber eine andere (HTML-)Datei aufrufe und wieder die letzte PHP-Datei ist die Variable leer. Selbes Verzeichnis, selbe Domain, selbes Browserfenster ... Lokal funktioniert das bei mir (XP, Apache 1.3.29, PHP 4.3.4) aber einwandfrei, bei 1&1 (Linux, Apache, PHP 4.2.3) aber eben nicht. Obwohl "use_trans_sid" gesetzt ist, wird automatisch die Session ID an die Seiten angehangen?!?! Aber wie gesagt: lokal (selber Client) läuft es. Kann mir jemand helfen?? Bin am verzweifeln :heul: Danke schon mal an alle, die sich einen Kopf machen. Thomas |
Habe das ganz mal auf zwei Scripts reduziert:
1. Script <?php session_start(); $_SESSION['Test'] = "TEST"; ?> In Sessionvariable: <?php echo $_SESSION['Test'] ?> geschrieben! Lese auf Session mit PHP 2. Script <?php session_start(); echo "Inhalt Sessionvariable: ".$_SESSION['Test']; ?> Rufe ich das erste Script auf, erscheint folgende Ausgabe: In Sessionvariable: TEST geschrieben! Rufe ich anschließend das zweite Script auf, erscheint: Inhalt Sessionvariable: Benutze ich den Link im ersten Script geht es. Wo liegt das Problem?? *seufz* :( |
Nach einem regen Mailaustausch mit dem Support von 1&1 konnte das Problem doch noch gefixt werden.
Ich hatte bei den Scripten den Doctype noch vor dem session_start() stehen. Session_start muss aber zwingend als erstes an den Browser gesendet werden. Leuchtet ein. Selber blöd. :rolleyes: Ich hatte mir halt keine Gedanken darum gemacht, weil es lokal bei mir auch so lief. Bye. Thomas |
Tja, dann wird der Doctype entweder von Php im Header generiert oder der Header darf noch nicht existent sein, damit die Funktion session_start() ihren Dienst verrichtet. Dann erst ist der Doctype manuell im Script anzuführen, respektive automatisch (durch Include oder sonst irgendwie). Jedenfalls funktioniert session_start() nur bei noch nicht erfolgter Ausgabe an den Client. Das ist hiermit also festzuhalten.
Ich glaube, alle, die Interesse an PHP haben (an der Programmierung damit sozusagen), werden Dir dankbar sein für die Klarstellung. Schreibe es vielleicht unter php.net in den Kommentarbereich von session_start(), damit jeder weiß, daß PHP mitunter in diversen Versionsbuilds so strikt reagiert. |
Das hat nichts mit "Versionsbuilds" :rolleyes: zu tun, ein aufmerksamer Manual Leser hätte das von vornherein beilegen können:
http://de3.php.net/session_start ~ |
Ich habe aufmerksam gelesen:
Zitat:
Habe Seine Aussage so interpretiert, daß u.U. die PHP Version unterschiedlich reagiert, verzeih für mein unperfektes Gebaren. PHP kommt ja so fehlerfrei daher, gell ? :) |
Keineswegs fehlerfrei, aber die Einstellungen zur Ausgabepufferung haben nichts mit unterschiedlichen PHP-Versionen per se zu tun.
~ |
Hätte ja sein können, daß PHP bei Version x.y.z so reagiert wie er ES GESCHRIEBEN hat, dann hat er vielleicht doch einen Holler geschrieben ? Bei ihm hat es lokal funktioniert. Dieser Widerspruch besteht nach wie vor. Soviel dazu ...
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag