Frage

Ich wollte einem Benutzer nie erlauben, für längere Zeit angemeldet zu bleiben, daher habe ich nie einen Nutzen dafür gesehen "erinnere dich an mich" Besonderheit.Ich begann jedoch darüber nachzudenken, wie es gemacht wird, und hätte gerne etwas Klarstellung.

Ich speichere derzeit meine Sitzungen in einer Datenbank.Was mich immer verblüfft hat, war, dass, obwohl ich nicht explizit ein Cookie setze, eines in meinem Browser platziert wird.Ich bin etwas verwirrt, weil eine Sitzung eine Sitzung und ein Cookie ein Cookie ist.Ich verstehe nicht, wie eine Sitzung ein Cookie setzt.

Ich würde auch gerne wissen, ob es ausreicht, einfach eine andere Sitzungsvariable im Sitzungsarray festzulegen, um den Benutzer angemeldet zu halten, oder ob ich trotzdem ein Cookie setzen muss?

War es hilfreich?

Lösung

Was mich immer verblüfft hat, war, dass, obwohl ich nicht explizit ein Cookie setze, eines in meinem Browser platziert wird.

Ein Sitzungshandler muss identifizieren, welche Sitzung zu welchem ​​Benutzer gehört.

Die überwiegende Mehrheit der Sitzungsbibliotheken tun dies durch das Setzen eines Cookies.

(Ist) das Setzen einer anderen Sitzungsvariablen im Sitzungsarray ausreichend, um den Benutzer angemeldet zu halten, oder müsste ich trotzdem ein Cookie setzen?

Die meisten Sitzungsbibliotheken sind festgelegt Sitzungscookies.Hierbei handelt es sich um Cookies ohne festgelegte Ablaufzeit.Sie laufen ab, wenn der Browser geschlossen wird, und reichen nicht aus, um eine „Angemeldet bleiben“-Funktion zu implementieren (die voraussichtlich auch nach einem Neustart des Browsers bestehen bleibt und daher eine explizite Ablaufzeit haben muss).

Andere Tipps

Um die Sitzungsdaten aus Ihrer Datenbank zurückzuziehen, ist ein Schlüssel erforderlich. Dies wird als Sitzungs -ID bezeichnet.

Die Sitzungs -ID muss irgendwo gespeichert werden. Entweder als Teil der URL -Zeichenfolge, die der Client wiedergibt oder häufiger in einem Cookie auf dem Client. Wenn die Anfrage veröffentlicht wird, liest Sitzung den Wert des Cookies und weiß, welcher Datensatz vom Sitzungsspeicher zurückgezogen werden soll.

Dies geschieht automatisch.

Der einzige Grund, die Sitzung zu verwenden, ist, wenn die Daten, die Sie aufbewahren möchten, größer als 4 KB sind (Browser -Einschränkungen). oder wenn die Zeit, die erforderlich ist, um die Daten von Ihrem Server zu ziehen, größer ist als das Lesen des Sitzungsspeichers.

Wenn die Datenmenge, die Sie speichern, weniger als 4 KB beträgt, empfehlen Sie Ihnen dringend, dies im Cookie zu beginnen. Ich speichere im Allgemeinen Dinge wie die Benutzer -ID, den Benutzer Vornamen und einige andere Attribute. Denken Sie daran, dass es trivial ist, einen Cookies -Wert zu inspizieren, daher sollten diese Informationen vor dem Besuch des Kunden verschlüsselt werden.

Eine andere Sache ist, wenn die Abfragezeit für die Erziehung der Daten aus der ursprünglichen Quelle klein ist, dann wählen Sie dies, anstatt sie in die Sitzung zu platzieren. Auf diese Weise erhalten Sie es nur, wenn Sie es tatsächlich benötigen, anstatt mit jeder einzelnen Seite.

Erklären Sie die Beziehung zwischen Cookie und Sitzung:

PHP verwendet Cookie, um die Sitzung für jeden Benutzer eindeutig zu identifizieren. Dies ist der einzige zuverlässigere Weg, da Cookie jedes Mal gesendet wird, wenn Sie eine Datei vom Server anfordern. Mit dem Token im Cookie, dem auch die Sitzungskennung, wird PHP das TMP -Verzeichnis nachschlagen, um festzustellen, ob die Sitzung vorliegt. Wenn die Sitzung vorhanden ist, werden die Variablen aus der richtigen Datei geladen und Sie können auf die Variablen dieser Sitzung zugreifen.

Daher speichern Cookies die Sitzungskennung, die erforderlich ist, um zu ermitteln, welche Benutzer welche Sitzung verwendet. Auf diese Weise kommt es auch, wie die Sitzung von Sitzungen entsteht, wenn Menschen die Sitzung identifizieren können, in der Cookie die Sitzungskennung einer anderen Person verwendet.

Die zugrunde liegende PHP -Sitzungsimplementierung legt das Cookie fest. Sie können dies ändern und den Sitzungs -ID -Wert in der Abfragebarstellung übergeben lassen, aber ich empfehle es nicht. Sie verwenden den Cookie nicht, Php tut es. Es verweist auf den im Cookie gespeicherten Sitzungs -ID -Wert, um Suchvorgänge nach Sitzungsdaten durchzuführen.

Ich würde es auch gerne wissen, wenn einfach eine andere Sitzungsvariable im Sitzungsarray festgelegt wird, um den Benutzer angemeldet zu halten, reicht aus oder müsste ich noch einen Cookie einstellen?

Sobald der Benutzer den Browser schließt, wird die Sitzung getötet und der Keks gelöscht. Ich glaube nicht, dass ein Mechanismus aus gutem Grund ausgeht, um den Sitzungswert zu bestehen, und aus gutem Grund.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top