PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Neue Session erzeugen ohne die aktuelle zu zerstören? (http://www.selfphp.de/forum/showthread.php?t=26040)

Kukulkan 09.08.2017 18:03:17

Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Hallo,

ich habe eine Client-Anwendung die ein eigenes Protokoll auf meinem Server bedient. Jetzt soll über dieses Protokoll eine Web-Session erzeugt werden, die dann in einem Webbrowser geöffnet werden soll. Ziel ist, dass ich einen gültigen Session-identifier zurück liefere.

Das Problem ist, dass die ursprüngliche Session aus dem Protokoll nicht angefasst werden soll. Ich möchte also, im Prinzip, die Session auf eine neue wechseln, dort verschiedene Werte in $_SESSION speichern und dann zur originalen Session zurückkehren. Dann den Session-Identifier (Session-ID) aus der neuen zurückliefern, damit man diese per Webbrowser nutzen kann.

Kann ich aus einer bestehenden Session eine neue erzeugen, diese Füllen und dann zur vorigen zurückkehren? So das die neue Nutzbar bleibt?

Ich denke es läuft auf session_encode() und session_decode() raus, aber irgendwie fehlt mir der beste Ansatz. Ich würde gerne vermeiden, auf dem Laufwerk direkt lesend/schreibend auf die Session-Dateien zuzugreifen (session_save_path()).

Wie mache ich das am besten?

Danke!

vt1816 10.08.2017 11:29:08

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Lies Du zum Beispiel hier.

Kukulkan 10.08.2017 12:04:41

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Danke, aber das ist nicht mein Fall. Ich will nicht Variablen hin und her oder sonstiges. Ich will aus meiner bestehenden Session heraus eine zweite generieren, die ich mit Werten befüllen und dann an einen Nutzer übergeben kann. Der kann die dann im Webbrowser öffnen und nutzen.

Meine erste Session soll danach für mich weiter bestehen bleiben.

chorn 10.08.2017 12:50:06

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
dann leg den Kram in einer Datenbank unter zwei Schlüsseln ab.

Kukulkan 11.08.2017 11:32:55

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Danke für den Tipp, aber ich habe die Sessions nicht in der Datenbank und ich will den Inhalt von $_SESSION haben nachdem der Nutzer einen Link im Browser aufruft den ich Ihm mitteile. Was soll ich da in die Datenbank tun?

Oder meinst Du bei jedem Aufruf in der DB gucken ob ich eine spezielle Session für den call habe um dann aus der DB die $_SESSION wieder herzustellen? Das würde aber eine Menge dauerhaften Overhead erzeugen für den eher seltenen Fall dass jemand auf diese Art kommt...

chorn 11.08.2017 12:25:30

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Wenn du die ID public machst, also an die URL anhängst, kannst du versuchen die Session mit session_id() nochmal zu starten, dann die Daten abzugrabbeln, dann mit session_abort() zu stoppen ohne zu löschen, und mit session_start() eine neue zu starten, wo du die Daten wieder reinpumpst.

Kukulkan 11.08.2017 12:41:14

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Ja, der Aufrufer kann die Session-ID in der URL mitgeben. So kann ich eine bestehende Session nutzen.

Aber das Problem, das ich hab, ist, aus einer anderen laufenden Session diese neue Nutzer-Session zu erstellen und vorab mit Daten zu befüllen. So dass der Nutzer dann später (wenige Sekunden) beim ersten Aufruf seiner URL mit Session-ID gleich eine gültige Session mit Login etc hat.

Ich wünschte sowas:

Ich speicher meine aktuelle Session-Daten aus meiner Session "A" temporär
Ich lösche alles zu meiner Session (unset($_SESSION);)
Ich erstelle eine neue Session mit neuer Session ID "B"
Diese Session fülle ich mit Daten in $_SESSION
Ich wechsle zurück zu meiner Session "A" (mit allen meinen Daten aus "A" in $_SESSION)
Ich geb als Ergebnis die Session-ID "B" in meinem Protokoll zurück

Dann soll ein Nutzer den Browser mit der Session "B" öffnen können und diese hat dann die Daten die ich oben für Session "B" hinterlegt habe.

chorn 11.08.2017 13:16:35

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Das kannst du so machen. Du musst dir nur die Daten nur in einer Variable merken, für den Zeitraum in dem du keine Session hast, und dann zwischen den Sessions springen mit session_id(), session_start(), session_abort().

Kukulkan 11.08.2017 13:54:46

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Genau hier liegt das Problem. Ich habe versucht das so zu tun, aber es wird immer die bestehende Session umbenannt. Weder session_abort, session_commit, session_regenerate_id oder sonstiges haben dazu geführt, dass ich eine neue zweite Session erhalte. Es blieb immer bei einem Session-File, das entweder umbenannt wurde oder nur den Inhalt wechselte. In keinem Fall konnte ich aus meiner Funktion eine zweite Session erzeugen :-(

chorn 11.08.2017 14:21:23

AW: Neue Session erzeugen ohne die aktuelle zu zerstören?
 
Du musst dir die alte ID+Daten merken, dann eine neue Session-ID generieren, damit eine neue Session starten (session_id(123yxz); session_start()), hier die Daten reinkopieren, und dann wieder zur alten Session wechseln. Und die neue ID dann weiterleiten.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:50:02 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.