So erzeugen Sie eine eindeutige session-ID in php
Auf unseren Webseiten wollen wir es möglich machen, zu teilen, Sitzungen accros mehrere domains. Alle diese websites auf dem gleichen server, aber einige von Ihnen haben eine andere IP-Adresse.
Mögliche Lösung, die ich fand, war um die session-ID selbst:
<?php
session_id($someUniqueHash);
?>
Funktioniert, wenn ich die hash wie md5('test'). Auf einer anderen domain auf te gleichen server haben wir die Sitzung wieder.
Das problem ist die Generierung der ID. Ich sehe einige Lösungen im internet mit microtime etc, aber wenn ich diesen Ansatz kann ich nicht Vorhersagen, die session-ID auf die andere domain /PHP-Seite.
Hat jemand eine Idee? Oder sollten wir nicht diese umzusetzen? Gibt es andere Möglichkeiten zu teilen-Sitzung über mehrere domains? (NICHT subdomains!)
- Warum gehst du nicht lassen Sie PHP generieren der session-ID für Sie? Sie können denselben session-IDs für domains BTW. Das ist entweder eine Frage des Cookies oder der übergabe der query-parameter.
- Die Abfrage param ist nicht bevorzugt, es ist unsicher und nicht url-freundlich. Soweit ich weiß Sie nur, dass Sie cookies accros der gleichen domain (subdomains auch) nicht multidomains.
- Es ist nur ein cookie Sie übergeben. Und Sie können cookies für fremde domains, so genannte third-party-cookies. Möglicherweise müssen Sie auch prüfen, die rechtliche Seite, dies zu tun (neben der technischen Seite, die ist gelöst). Btw alle technischen details, die Sie vielleicht kennen lernen wollen: HTTP State Management Mechanism RFC6265
- Tnx, Hakre. Nicht wusste, dass noch. Ich werde untersuchen Sie Ihre Optionen, und reagiert hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich erreicht das system durch die Verwendung eines OAuth Typ flow, aber wir ersetzt, die der Verbraucher mit dem Benutzer.
Also jede domain haben Sie die authentifizierten Access_Token in einer eigenen session.
Sie würden dann verwenden, Access_Token, um Informationen über Benutzer, die aus einer api.
Ich auch gelöst, die session-problem mit session_set_save_handler und Speicherung der sessions in eine Datenbank Tabelle... Diese Tabelle würde die Access_Token auch, macht es wirklich leicht zu finden, die Sitzung mit einer DB-Abfrage.
Hoffe, das hilft mit Ideen.
Hmm das ist eine schwierige Situation.
Wie jeder weiß PHP verwendet cookies, um zu verstehen session_ids, wenn ein Nutzer kommt auf Ihre Seite und es gibt keine Möglichkeit von cross-domain-cookies: Cross-domain-cookies (edit: es gibt aber die Methode ist kompliziert).
Dies ist wahrscheinlich der Grund, warum ich habe nie gesehen, eine Website umzusetzen, obwohl Sie unterschiedliche domains.
Könnte man über einen link auf Ihrer Seite von einer domain übergeben der session-id an die nächste Domäne, die durch $_GET oder $_POST. Das wird nicht funktionieren, wenn der Benutzer direkt in Ihre andere Seite.
Nur teilweise (keine zuverlässige) Methode, die ich mit oben kommen kann ist, um einen Datensatz des Benutzer comptuer in der DB verwenden, um zu verstehen, was Sitzung ist befestigt. So dass Sie house die Computer IP-Adresse und vielleicht noch einige andere Angaben und, das grenzt an ein session.
Die IP und andere Angaben zu einer Personen, Rechner, sich in die andere Domäne.
Vielleicht ist dies nicht eine option für Sie, aber Sie könnten versuchen, diese.
Auf Ihrer Haupt-Website, die Sie erzeugen der session-id als normal und zu verewigen die Sitzung auf eine andere domain über Bild-tags, die mit der session-id in der URL. In der Antwort, die andere domain wird ein cookie gesetzt, so dass, wenn der Besucher kommt, dort wird es schon wissen, die session-id.
Fühlt sich ein bisschen smarty pants Lösung, aber es sollte funktionieren, wenn du nicht zu viele andere domains 🙂 Drittanbieter-cookies kann deaktiviert werden separat im Browser btw, etwas zu prüfen.
Oh btw, Tagung Annahme (Annahme einer id über den query-Parameter und das setzen eines Cookies) ist zart Zeug und sollte geschützt werden, d.h. die Sitzung muss bereits vorhanden sein, bevor die cookie-Einstellung.
Konfigurieren Sie jeden Standort einzeln:
Mehrere Websites teilen Sitzungen, lassen Sie Sie verwenden die gleichen
$cfgsession['file']
.Eine Veranstaltung, die von einem Standort in einem request an eine andere domain (vielleicht, wie empfohlen, von Jack), und so lange, wie Sie nicht fangen Sie Ihre Anfrage in einem anderen browser oder was auch immer (bitte etwas zu hemmen session hijacking), lassen Sie Sie geben Sie eine session mit $_GET. Zum Beispiel:
Und dann einfach Rollen Sie Ihre eigenen session_ Funktionen:
Wenn diese login-Sitzungen, sollten Sie verwenden einen single-sign-on (SSO) - Lösung wie diejenigen, die implementieren der auf SAML-standard.