webentwicklung-frage-antwort-db.com.de

Wann sollte ich Sitzungsvariablen anstelle von Cookies verwenden?

Sitzungsvariablen und Cookies scheinen mir sehr ähnlich zu sein. Ich verstehe die technischen Unterschiede, aber wie entscheiden Sie, wann Sie eins gegen das andere verwenden?

53
sprugman
  • Sitzungen werden auf dem Server gespeichert. Dies bedeutet, dass Clients keinen Zugriff auf die Informationen haben, die Sie über sie speichern. Sitzungsdaten, die auf Ihrem Server gespeichert sind, müssen nicht mit jeder Seite vollständig übertragen werden. Clients müssen lediglich eine ID senden und die Daten werden vom Server geladen.

  • Andererseits werden Cookies auf dem Client gespeichert. Sie können für lange Zeit dauerhaft gemacht werden und ermöglichen Ihnen ein reibungsloseres Arbeiten mit einem Cluster von Webservern. Im Gegensatz zu Sitzungen werden in Cookies gespeicherte Daten jedoch bei jeder Seitenanfrage vollständig übertragen. 

  • Speichern Sie keine Daten in Cookies

    • es kann vom Endbenutzer gesehen, gelesen und manipuliert oder von Personen mit schändlicher Absicht abgefangen werden. Sie können keinen Daten in Cookies anvertrauen, außer der "session_id".
    • Es erhöht Ihre Bandbreite, wenn Sie pro Seite 1 KB Daten pro Benutzer hinzufügen. Dadurch erhöht sich möglicherweise die Bandbreite um 10-15%. Dies ist aus Sicht der $$ vielleicht nicht kostspielig, könnte aber aus Performance-Sicht sein. Dies würde Ihre Bandbreite pro Server effektiv um 10-15% verringern, dh Sie benötigen möglicherweise mehr Server.
  • Was Sie in Sitzungsdaten speichern können, hängt von der Datenmenge und der Anzahl Ihrer Benutzer ab. no_of_users * size_of_session_data muss auf Ihrem Server nicht über genügend freien Speicher verfügen.

52
Daniel Vassallo
  • sitzung immer verwenden
  • verwenden Sie Cookies nur, wenn Sie länger angemeldet sind. Fügen Sie dann ein Cookie mit einer verschlüsselten Benutzer-ID hinzu.
9
Bozho

Meistens wird der Sitzungsstatus mit Cookies beibehalten. Es ist also nicht wirklich eine Frage des einen oder anderen, sondern wie man sie zusammen benutzt.

Die Verwendung der Sitzungsinfrastruktur Ihres Frameworks kann die Dinge einfacher machen. Durch manuelles Nachverfolgen des Status mit Cookies erhalten Sie jedoch eine feinere Kontrolle. Die richtige Lösung hängt davon ab, was Sie erreichen wollen.

7
Daniel Pryden

Cookies können länger als eine Sitzung bestehen bleiben. Cookies können jedoch auch vom Benutzer gelöscht werden oder Sie haben einen Benutzer, dessen Browser keine Cookies akzeptiert (in diesem Fall funktioniert nur eine serverseitige Sitzung).

5
danben

Cookies sind clientseitig, Sitzungen sind serverseitig. Verwenden Sie Cookies für kleine Daten, denen Sie dem Benutzer vertrauen können (z. B. Schriftarteinstellungen, Websitedesign usw.) und für undurchsichtige IDs für serverseitige Daten (z. B. Sitzungs-ID). Erwarten Sie, dass diese Daten jederzeit verloren gehen können und nicht vertrauenswürdig sind (dh bereinigt werden müssen). Verwenden Sie Sitzungsdaten für größere Datenblöcke (für viele Systeme können Objekte, Datenstrukturen usw. speichern) und solche Sie müssen vertrauen - wie der Autorisierungsstatus usw. Im Allgemeinen sollten Sie Sitzungsdaten zum Speichern von größeren Statusdaten verwenden.

Sie können beispielsweise den Autorisierungsstatus in Cookies speichern, wenn dies für die grafische Benutzeroberfläche, das Zwischenspeichern usw. erforderlich ist - aber vertrauen Sie niemals darauf und verlassen Sie sich nicht darauf, dass es vorhanden ist. Cookies sind leicht zu löschen und leicht zu fälschen. Sitzungsdaten sind viel schwerer zu fälschen, da Ihre App dies steuert.

5
StasM

Cookies werden bei jeder Anforderung an den Server gesendet. Wenn Sie also eine beträchtliche Datenmenge speichern möchten, speichern Sie diese in einer Sitzung. Andernfalls, wenn Sie kleine Datenmengen speichern, reicht ein Cookie aus. Alle sensiblen Daten sollten in einer Sitzung gespeichert werden, da Cookies nicht zu 100% sicher sind. Cookies haben den Vorteil, dass Sie Speicherplatz auf Ihrem Server sparen können, der normalerweise Sitzungsdaten speichert.

2
JonoW

Sitzungen werden auf dem Server gespeichert. Wenn Sie etwas in einem Cookie speichern, sendet der Browser des Benutzers diese Informationen bei jeder Anfrage, wodurch Ihre Website möglicherweise aus Sicht des Benutzers beeinträchtigt wird. Ich versuche, Cookies zu vermeiden, wenn ich kann.

1

Ein Nachteil von PHP - Sitzungen ist die Funktionsweise der Sitzungsverarbeitung. Insbesondere kann jeweils nur für einen Prozess/eine Anforderung eine Sitzung zum Schreiben geöffnet sein. Auf

session_start() 

die Sitzungsdatei ist gesperrt. Wenn mehrere Prozesse voranschreiten, häufen sich die übrigen und warten, bis sie dran sind. 

Mit anderen Worten, wenn Sie AJAX auf einer Seite verwenden, um mehrere Elemente zu aktualisieren - Sie möchten nicht, dass die AJAX -Anfragen dieselbe Sitzung öffnen -, werden diese in eine Warteschlange gezwungen Anfragen bleiben stecken - die Sitzung wird nicht freigegeben. Dies führt dazu, dass der Browser nicht mehr reagiert. Wenn Sie eine neue Registerkarte oder ein neues Fenster öffnen, wird nur eine weitere nicht füllbare Anforderung in die Warteschlange auf dem Server gestellt. Verwenden 

session_write_close()

so bald wie möglich ist die Freigabe der Sitzung eine teilweise Umgehung.

Eine lang andauernde Anfrage, bei der ein Benutzer sich langweilt und mehr Fenster öffnet, könnte den gleichen Browser-Effekt haben.

Ich empfehle, PHP -Sitzungen zu vermeiden.

1
Dieter Donnert

Sitzungen und Cookies sind überhaupt nicht gleich. Cookies sind clientseitig. Sitzungen sind serverseitig. Sitzungen verwenden häufig (aber nicht notwendigerweise) Cookies, um eine Anfrage mit einer anderen Anfrage desselben Benutzers zu korrelieren und festzustellen, dass sie zur selben Sitzung gehören.

Eine Sitzung ist ein künstliches Konzept, und HTTP hat diesen Begriff nicht. Es wird von Webservern erstellt, um Webentwicklern dabei zu helfen, Informationen über Anforderungen wie Benutzerkontoinformationen, Einkaufswagen, Formulardaten usw. zu übertragen. Ein Cookie wird von Standard-HTTP-Headern übertragen.

Die Informationen, die Sie in einer Sitzung im Vergleich zu einem Cookie speichern, bleiben Ihnen überlassen. In der Regel speichern Sie Inhalte in Cookies, die Sie über mehrere Sitzungen hinweg beibehalten möchten, nachdem der Benutzer seinen Browser geschlossen hat. Erinnern Sie sich vielleicht an Authentifizierungstoken, um die Funktion "Erinnern an mich" zu implementieren, oder an frühere Benutzeraktivitäten, um die Benutzererfahrung zu personalisieren. Halten Sie diese Informationen klein und "referenziell", d. H. Es können nur IDs sein, die auf umfangreichere Informationen verweisen, die Sie auf der Serverseite speichern. Denken Sie daran, dass die Clientseite anfälliger für Malware ist. Speichern Sie daher keine Kennwörter oder vertraulichen Informationen.

Schließlich gibt es noch einen lokalen Speicher, den Sie nicht erwähnt haben. Dies ist auch clientseitig, aber wahrscheinlich etwas weniger anfällig für Cross-Site-Scripting-Hacks, da im Gegensatz zu Cookies Daten nicht automatisch in den Headern gesendet werden.

0
jbx

Sitzungen werden auf der Serverseite gespeichert. Wenn ein Besucher etwas in einem Cookie speichert, sendet der Browser die Benutzerinformationen für jede angeforderte Anforderung. Dies neigt dazu, viele Server-Computerzeit zu beanspruchen und die Benutzererfahrung zu verlangsamen. Einige Browser tun dies nicht Support-Cookies, die Sitzungen gegenüber Cookies mehr Vorteile verschaffen. Ich empfehle dringend Sitzungen. Diese Website kann helfen http://php.net/manual/de/features.cookies.php Danke

0
Nekta Point

Verwenden Sie sessions nur, wenn die Daten für cookies zu groß sind oder wenn die Daten so groß sind, dass sie die Leistung beeinträchtigen würden, wenn Sie cookies verwenden.

Wenn Sie zum Beispiel kleinere Daten speichern, dann ist die Größe eines session id in Ihrer cookie wie 2 Anmeldemarken oder etwas Ähnlichem. Dann sehe ich nicht, warum Sie sessions über cookies verwenden würden.

Beachten Sie außerdem, dass PHP-Sitzungsdateien standardmäßig auf der Festplatte gespeichert werden, verglichen mit Cookies, die nur auf der Clientseite gespeichert werden.

0
Jo Smo

Dein definitiver Führer

NB - Cookie wird in Browsern der Benutzer gespeichert, Session wird auf Ihrem Hosting-Server gespeichert.

Wann verwenden

  1. Verwenden Sie ein Cookie wenn Sie möchten, dass Ihre App die Daten des Benutzers immer speichert, auch wenn sie ihre Browser geschlossen haben. Wenn Sie beispielsweise www.Facebook.com eingeben, gelangen Sie zu Ihrem Konto, auch wenn Ihr Browser geschlossen und wieder geöffnet wurde.

    Alle in einer Sitzung gespeicherten Daten werden gelöscht, sobald Sie Ihren Browser schließen.

  2. Verwenden Sie ein Cookie wenn die zu speichernden Benutzerinformationen viel größer als normal sind. Wenn Sie über eine größere Benutzerbasis wie Facebook verfügen, denken Sie darüber nach, wie die Benutzersitzungen beim Hosting aussehen Maschine.

  3. Verwenden Sie eine Sitzung wenn die zu speichernden Benutzerinformationen nicht größer als normal sind und Sie nicht möchten, dass die Öffentlichkeit Zugriff auf Ihre Benutzervariablen hat ...

0
Emeka Obianom