|
|
|
sessions funktionieren nur so halb?
|
Tach!
PHP ärgert mich ein wenig. Ich würde gerne Sessions verwenden, aber irgendwie geht alles nur so halb.
Das soll heißen, dass ich zwar ein Cookie kriege, aber z.B. session_id() mir nichts zurückliefert. session_start läuft aber sauber.
Und das wirklich Problem:
Ich kann keine Sessionvars speichern. Bzw. ich kann es, aber nur mit session_register (das funktioniert einwandfrei , liefert mir aber eine Warnung, dass die Funktion deprecated ist; PHP v5.3.0 läuft). Wenn $_SESSION['test'] = "fuuu"; mache, wird dies nicht dauerhaft gespeichert (ich kann in der Scriptausführung danach darauf zugreifen, aber es wird nicht über zwei Seitenaufrufe gespeichert. session_register verhält sich normal).
Jemand eine Idee, was da falsch laufen kann?
|
|
|
|
|
|
|
Moin Arma!
Vielleicht hilft dir ein wenig Debug-Code weiter:
|
Code: |
<?php
error_reporting(E_ALL);
header('Content-Type: text/plain');
if (!session_start() || !session_id()) {
echo 'Mist!
';
}
print_r($_SESSION);
print_r($_COOKIE);
$_SESSION['muh'] = 'kuh'; |
|
Unterm Strich: Nachsehen, was wirklich vom Browser zurückkommt, alle Fehlermeldungen anzeigen lassen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Origami am 09.12.2011 21:36]
|
|
|
|
|
|
Mhm. Habe ein wenig herumgetestet. Dein Code hat mich zumindest auf die richtige Spur gebracht
Mein Code ist über mehrere Dateien verteilt und anscheinend kann ich in $_SESSION nur schreiben, wenn ich direkt in der inkludierten Datei noch mal session_start(); aufrufe.
Ist das das normale Verhalten?
|
|
|
|
|
|
|
Nein.
Es klingt, als ob du session_start() erst nach dem Setzen der Variablen aufrufst. Die Variable $_SESSION existiert nicht, bis die Session gestartet wurde. PHP dürfte sie aber belegen, sobald du sie benutzt (wie jede andere Variable auch). Und vielleicht gibt PHP dabei keine Fehlermeldung aus.
Sicher würdest du mit einer Session-Klasse gehen, die die Sitzung automatisch startest, sobald du sie brauchst oder ein Session-Cookie empfangen wurde. So etwas gibt es zuhauf im Netz oder du nimmst einfach meine.
Wenn du die Session ohnehin startet möchtest (eigentlich kein guter Stil), kannst du in der php.ini den Wert session.auto_start auf 1 setzen.
|
|
|
|
|
|
|
Okay. Ja. Ich bin doof!
Bin jetzt nach langer Suche auf den Fehler gestoßen. Ich hatte in meiner checkLogin()-Funktion noch ein session_write_close(); drin, welches ich mal zum Testen von irgendwas da reingeschrieben habe.
Jetzt geht alles
|
|
|
|
|
|
Thema: $_SESSION wird nicht gespeichert. ( sessions funktionieren nur so halb? ) |