Ich habe eine PHP-Webanwendung entwickelt, die auf Cookies basierende Sitzungen verwendet hat, und es hat alles gut funktioniert - bis ich feststellte, dass es in Browsern, in denen Cookies von Dritten deaktiviert sind, nicht funktioniert (weil das Skript geladen wird) ein iframe auf einer anderen Website / Domain).
Also habe ich mich entschieden, zu URL-basierten Sitzungen umzuschalten (was vermutlich sicher ist, da das Skript in einem iframe ist, wird es keine sichtbare URL für den Benutzer geben, die ein Lesezeichen oder Ähnliches haben soll.) / p>
Aus irgendeinem Grund verwendet jedoch seit meiner Umstellung auf domänenbasierte Sitzungen jede Seite in meiner Webanwendung eine andere Sitzungs-ID.
Hier ist mein Code ...
%Vor%... das ist das Erste, was auf jeder Seite aufgerufen wird (ohne vorherige Ausgabe, die mir bekannt ist).
Die erste Seite in meiner Web-App enthält ein Formular und ich sehe, dass die erforderliche Eingabe der versteckten Sitzungs-ID automatisch von PHP hinzugefügt wird:
<input type="hidden" name="PHPSESSID" value="m4jbeec47uplnf95ue2h244a02" />
Aber die Sitzungs-ID, die auf der nächsten Seite (von der das Formular übermittelt wird) gemeldet wird, ist
Sitzungs-ID: iiovfkrf3hesj1um5orasv7it6
Wenn ich außerdem die erste Seite mit CSSL (anstelle von CSSL ) lade, werden die Formularergebnisse auf derselben Seite erneut geladen (anstatt auf der nächsten Seite) geladen).
Was ich bereits versucht habe:
ini_set("session.cookie_secure", 0);
und
ini_set("session.cookie_secure", 1);
und
ini_set('session.gc_maxlifetime', 30 * 60); // expires in 30 minutes
und (am Ende des Skripts)
session_write_close();
und Entfernen
ini_set("session.cache_limiter", "");
Von phpinfo()
:
Irgendwelche Ideen?
Ich denke, dass das Problem irgendwo auf einen Fehler in meinem Code zurückzuführen sein muss. Ich habe das Testskript unten erstellt und es funktioniert wie erwartet (auf demselben Server):
URL-Sitzungstest.php
%Vor%Wird den eigentlichen Fehler veröffentlichen, sobald ich ihn gefunden habe ...
AKTUALISIEREN
Das Problem war, dass ich ein POST-Redirect-GET-Modell verwendet habe und den erforderlichen PHPSESSID
-Parameter nicht an die GET-URL angehängt habe!