Ich muss die Benutzersitzung zwischen Servern übertragen. dh. Wenn sich der Benutzer bei Server1 angemeldet hat und der Benutzer in Server2 existiert, muss ich die Benutzer-Sitzungsdetails an Server2 übertragen. Dazu habe ich die folgende Technik verwendet.
Leiten Sie den Benutzer von server1 an Ссылка um Führen Sie auf server2 (intern im PHP-Code von auth_from_server1.php) eine Anfrage an Ссылка mit der Session-ID 12345 durch. Überprüfen Sie auf server1 in der Implementierung von check_session_id.php die ID und geben Sie OK, FAILURE und sitzungsbezogene Daten, die Sie übergeben möchten, wie z. B. Benutzername, ... zurück. Wenn der Anruf auf dem Server2 mit OK zurückkehrt, speichern Sie die übertragenen Sitzungsdaten und geben Sie dem Benutzer einen Cookie und eine Sitzung für diesen Server.
Aber wenn die Rückruffunktion die auth_from_server1.php aufruft, ist der Wert in der Sitzungs-ID null. Ich habe versucht, die SessionID als
zu überprüfen %Vor%Aber $ _SESSION ['sessionId'] ist null. Auf der Login-Seite setze ich den Wert für die Session-ID als
%Vor%Vielen Dank im Voraus ....
Wäre es nicht einfacher, Sitzungsdaten nur in einem freigegebenen Verzeichnis zu speichern?
Alternativ können Sie es in einer Datenbank speichern .
Ich würde vorschlagen, einen benutzerdefinierten PHP-Session-Handler zu schreiben oder einen vorgefertigten Session-Handler wie ShareDance zu verwenden. Sie können Sitzungsinformationen in einer MySQL-Datenbank speichern, die von beiden Maschinen gemeinsam genutzt wird, eine SQLite-Datei usw.
Es gibt viele Vorteile für die Verwendung von PHPs eingebauter Fähigkeit, Sitzungsdaten mit session_set_save_handler () zu erhalten / setzen, nämlich, dass alle Aufrufe von $ _SESSION in Ihrem Anwendungscode ohne zusätzliche Modifikationen funktionieren.
>Weitere Informationen finden Sie hier: Ссылка
Ein Tutorial zum Schreiben von benutzerdefinierten Session-Handlern (alt, aber immer noch relevant) ist hier: Ссылка
Ich denke, eine ID eines Benutzers in der Datenbank zu speichern, ist der am besten geeignete Weg, dies zu tun. Es ist ein fehlerfreier Weg.
Prost
Dieses Problem kann schnell aus dem Ruder laufen, wenn Sie dem Problem mehr und mehr Probleme hinzufügen. Eine der besten Lösungen, die ich gefunden habe, besteht darin, die Sitzung in einer Datenbank zu speichern und diese Datenbank mit den Servern zu teilen. Redis funktioniert normalerweise gut dafür. Hier ist ein guter Leitfaden für mit redis
beginnen