PHP - Sitzungs-ID wird geändert, wenn session.use_trans_sid verwendet wird

8

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() :

%Vor%

Irgendwelche Ideen?

    
ban-geoengineering 20.05.2017, 10:28
quelle

1 Antwort

3

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!

    
ban-geoengineering 07.06.2017, 12:17
quelle

Tags und Links