Heim >Backend-Entwicklung >PHP-Tutorial >Erreichen Sie die gemeinsame Nutzung einer SITZUNG unter mehreren Domänennamen
Um eine Multi-Domain-Name-Sharing-Sitzung zu realisieren, müssen Sie zunächst den Funktionsmechanismus von SESSION verstehen. Ich werde nicht auf die Grundkonzepte eingehen.
Sitzung läuft wie folgt ab:
Benutzer A besucht Site Y. Wenn Site Y session_start() ausführt (im Folgenden wird davon ausgegangen, dass session_start() immer vorhanden ist), wird normalerweise eine session_id generiert mit COOKIE Speichern für Benutzer A im Formular (wir können die Übergabe der SESSION-ID in COOKIE erzwingen, indem wir session.use_only_cookies in php.ini auf 1 setzen). Zu diesem Zeitpunkt erscheint die SESSION-ID als $_COOKIE['PHPSESSID'] (PHPSESSID kann mit der Funktion session_name() geändert werden)
Benutzer A greift dann zu und diese Sitzungs-ID ($_COOKIE['PHPSESSID']) wird jedes Mal angezeigt, wenn A beim Zugriff auf Y an Site Y gesendet wird.
Auf Site Y wird es ein solches Verzeichnis geben, in dem die eigentlichen Daten der SESSION gespeichert werden. Site Y empfängt die Sitzungs-ID, erhält dann über die Sitzungs-ID die Zuordnung zu den SESSION-Daten und gibt die SESSION-Daten zurück.
Vielleicht sind Sie schlau und haben bereits darüber nachgedacht, da die SESSION zwischen dem Server und dem Client über eine SESSION-ID verbunden ist und die SESSION-Daten in einem bestimmten Ordner in Form einer gewöhnlichen Datei gespeichert werden .
Wenn wir dann unterschiedliche Domänennamen implementieren möchten, müssen wir nur die folgenden zwei Bedingungen erfüllen:
1) Die SESSION-Datenverzeichnisse verschiedener Domänennamen werden miteinander vereinheitlicht oder synchron aktualisiert.
2) Verwenden Sie für denselben Kunden eine einheitliche SESSION-ID
, um die erste Bedingung zu realisieren.
Wenn es sich um denselben Server handelt, müssen keine Einstellungen vorgenommen werden.
Wenn es geclustert/verteilt ist, dann glaube ich nicht, dass ich dazu etwas sagen muss. . Wer verteilte Anwendungen ausführen kann, sollte mehr Erfahrung mit der Verzeichnisfreigabe haben als ich. Ich habe nicht zu viele Server getestet und es gibt Gründe sowohl für subjektive als auch objektive Bedingungen.
Ich möchte hier hauptsächlich über die zweite Bedingung sprechen – dafür zu sorgen, dass verschiedene Domainnamen eine einheitliche SESSION-ID haben.
Wie sollten wir uns dann vereinen?
Zuerst muss diese SITZUNGS-ID zwischen verschiedenen Domänennamen weitergegeben werden, und da das Cookie spezifisch für den Domänennamen sein muss, wird die Übertragungsaktion vom Client abgeschlossen. Wenn der Zustellungsprozess vom Kunden nicht abgeschlossen wird, weiß der zuzustellende Domänenname nicht, für welchen Kunden er bestimmt ist.
Der zweite Schritt besteht darin, die SESSION-ID unter dem Domainnamen zu ändern, der die Übertragung akzeptiert.
So liefern Sie:
In HTML können wir viele Methoden verwenden. Zum Beispiel
iframe
oder .js