PHP-Wie kann ich mehrere Sitzungen?
Ich möchte in der Lage sein, um hin-und herschalten zwischen den sessions in php. Hier ist meine aktuelle code:
<?php
session_name("session1");
session_start();
$_SESSION["name"] = "1";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_name("session2");
session_start();
$_SESSION["name"] = "2";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_name("session1");
session_start();
echo "<pre>", print_r($_SESSION, 1), "</pre>";
Will ich es ausgeben
Array
(
[name] => 1
)
Array
(
[name] => 2
)
Array
(
[name] => 1
)
aber es ist die Ausgabe
Array
(
[name] => 1
)
Array
(
[name] => 2
)
Array
(
[name] => 2
)
Ist es möglich, zwischen den Sitzungen wechseln? Ich brauche nicht zwei Sitzungen gleichzeitig laufen, aber ich muss in der Lage sein, zwischen Ihnen zu wechseln. Wenn ich diesen code ausführen, bekomme ich zwei cookies: Sitzung 1 und session2 mit dem gleichen Wert.
Vielen Dank für jede Hilfe!!!
Helfen könnte: stackoverflow.com/questions/7551404/...
Vielen Dank, ich sah schon, dass. Das ist genau das, was ich benötige, aber für einige Grund es nicht funktioniert.
Ihr Titel sagt, es ist "funktioniert nicht", wenn in der Tat es nicht zu tun, was Sie denken, Sie tun sollten. Warum Fragen wir nicht die entsprechende Frage, Wie kann ich x zu tun? Dies ist, was ich versucht habe.
Mit einem
du meinst weglassen session_write_close und nur ein session_start?
Vielen Dank, ich sah schon, dass. Das ist genau das, was ich benötige, aber für einige Grund es nicht funktioniert.
Ihr Titel sagt, es ist "funktioniert nicht", wenn in der Tat es nicht zu tun, was Sie denken, Sie tun sollten. Warum Fragen wir nicht die entsprechende Frage, Wie kann ich x zu tun? Dies ist, was ich versucht habe.
Mit einem
session_start();
nur.du meinst weglassen session_write_close und nur ein session_start?
InformationsquelleAutor Nathan | 2014-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie brauchen, um zu verwenden ist
session_id()
stattsession_name()
Diese drucken:
session_id
ist ein Bezeichner für eine Sitzung, die hilft bei der Unterscheidung der Sitzungen.session_name
ist nur eine namens-alias für die aktuelle SitzungDie Idee ist, dass verschiedene Benutzer sollen nicht die gleiche session-ID. Natürlich wird es nicht eine einfache Zeichenfolge wie Sitzung 1,sesson2 stattdessen wäre eine uuid eindeutig zu, dass Benutzer oder Sitzung.
Diese Lösung führt zu enormen Sicherheitsrisiken, sofern gut umgesetzt.
Dies funktioniert für mich, wie bereits in der Antwort, die Sie brauchen, um eine einzigartige und sichere session-id.
InformationsquelleAutor raidenace
Als die Kommentare zu den vorhandene Antwort anzugeben, die angebotene Lösung ist vielleicht nicht ideal, und ich möchte Ihnen einige alternative. Lassen Sie eine Funktion mit dem Namen
sane_session_name()
, die wie folgt aussieht:Mithilfe der "vernünftige" Weise substituiert, für
session_name()
in den OP ' s original-code, bekommen wir dies:und es wird die Ausbeute der gewünschten Ausgabe:
Was ist anders?
Darauf hinweisen, den Unterschied zwischen dieser Antwort und der raidenace Antwort:
$_SESSION
superglobale unterschiedliche Inhalte gespeichert werden können, für Besucher von Alice und Bob, während in den anderen beiden website-Besucher und Alice ein Bob würde "Daten", und eher sinnlos einen cookie namensPHPSESSID
mit dem Wert session2 eingestellt ist, jedes mal und senden hin und her.Sicherheit
Jene zu schützen "mehrere (pro Benutzer) sessions" von session fixation und session hijacking, können wir die weitere Nutzung dieser litte Funktion
haben und die OP ' s code wie folgt Aussehen:
InformationsquelleAutor humanityANDpeace