Das speichern von Benutzer-session-Variablen in der Datei vs. Datenbank
Habe ich eine php-Anwendung, und ich bin speichern die session-Variablen für den Benutzer mit $_SESSION selbst. Gibt es Besondere Vorteil der Speicherung in einer Datenbank?
Ich bin auf der Suche nach einem zuverlässigen /gut recherchierte Artikel, die spricht mehr darüber. Ich havent in der Lage gewesen zu finden, noch nichts.
Ist es ein problem mit der aktuellen Implementierung? Wenn nicht, ist dies nicht schlagen mich, wie ein SO Typ-Frage. Von meinem Verständnis sind wir hier um Probleme zu lösen, nicht über hypothetische Vorteile. Falls ersteres zutreffend ist, wäre es hilfreich zu wissen, welche tatsächlichen Probleme bei Ihnen auftreten.
Parker Zustimmen, das wäre eine bessere Passform für programmers.stackexchange.com
Parker Zustimmen, das wäre eine bessere Passform für programmers.stackexchange.com
InformationsquelleAutor Alan Beats | 2011-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Irgendwann in der Zeit, Sie gehen zu müssen, um etwas lagern, die in einer Sitzung. Ob es alle session-Variablen oder nur die ID einer Zeile in der sessions-Tabelle. Wenn das der Fall ist, würde es ziemlich leicht sein, zu ändern, die ID, gespeichert in einer schlecht verschlüsselten Sitzung und hijack einer anderen Sitzung.
Bedenken Sie:
Volle Session-Option. Das hat die Benutzer-ID, den Benutzernamen und eine verschlüsselte und gehashte Passwort gespeichert, so dass jedes mal, wenn eine Seite aufgerufen wird, überprüft es mein login. Hijack jemand anderes die session-id haben, zu wissen, dass Ihre Benutzer-ID, Benutzername und Passwort-Hash und in der Lage sein, zu überwinden, die Sitzungen inhärenten Verschlüsselung.
Sitzung + DB-Option. Dieser hat nur eine Session-ID gespeichert, die auf eine Zeile in einer Datenbank. Alles, was ich zu tun der Sitzung zu ändern ich will, ist, die Verschlüsselung zu knacken auf die Sitzung und sagen, hinzufügen, um die Session-ID. Ich würde dann authentifiziert werden, wie der Benutzer, der angemeldet nach mir.
Könnten Sie speichern login-Daten in einer session und dann alle keine login-bezogene Daten in einer session-Tabelle, wenn Sie eine Menge von zusätzlichen Informationen, aber dann wieder Sie könnte genauso gut einfach entfernen Sie die Notwendigkeit für eine zusätzliche Tabelle, und extrahieren Sie die Daten aus, was entsprechenden Tabellen, die Sie brauchen.
InformationsquelleAutor Dormouse
Den Vorteil, den Sie haben, es zu speichern in einer Datenbank ist, dass die Daten vorhanden, wie lange, wie Sie wollen, es zu bestehen.
Ihrem browser zerstören wird die Sitzung nach wie es eingerichtet ist, das macht es ein bisschen unzuverlässig. Ich kann jedoch nicht finden Sie einen Artikel auf diesem noch nicht, aber das ist, was ich als ein übereinkommen für eine situation wie diese.
Alle Daten, die gespeichert werden muss, langfristig, wie user details und Aktivität, die ich in einer Datenbank speichern. Alle Daten, die nur für die aktuelle Arbeitsfläche, wie Sie die Protokollierung in eine Seite und posten ein paar Kommentare etc. werden in der session gespeichert. Mir zum Beispiel speichern der Benutzer-Authentifizierung Informationen in einer Sitzung, ständig zu überprüfen, ob der Benutzer angemeldet ist oder nicht und ob die Umleitung ihm/Ihr auf die richtige Seite.
Diese wirkt Wunder bei der überprüfung der Zugriffsrechte in der gesamten Anwendung.
Für mich ist es viel sicherer, zu speichern, Nutzerdaten in einer Datenbank, weil es nicht öffentlich zugänglich wie die $_SESSION.
Bitte nicht mit mir übereinstimmen, wenn Sie wollen obwohl.
InformationsquelleAutor Etienne Marais
Ich würde sagen, die Speicherung in der Datenbank ist besser.Da
Wenn Sie Ihre Website hostet, mit einem shared host
PHP verwendet den gleichen Pfad für das speichern von Sitzungen für alle Benutzer,irgendwo, die nicht in Ihrem Ordner.
Können Sie verfolgen die Benutzer und deren status leicht.
alle session-Daten in einer Datenbank.
Diese Artikel kann helfen.
InformationsquelleAutor Radheshyam Nayak
Gut, das ist eine Frage für die Ewigkeit. Persönlich von dem, was ich gelernt habe in meiner Zeit. Es sei denn, Ihre Website beginnt, boomt Massiv an einem großen Maßstab, in dem Sie brauchen, um mit mehreren Servern für verschiedene Aspekte des Systems, wie load balancing, wo Sie haben viele Spiegel-Systemen läuft. Oder brauchen, um die Leistung zu verbessern, ein wenig für eine über besiedelten system die Vorteile der Verwendung von DB-bezogenen Sitzungen oder Datei-basierte Sitzungen wirklich nicht anders.. ich gönne es könnte falsch sein, dies ist lediglich meine persönliche Wahrnehmung aus meinen eigenen Erfahrungen. Genauso wie du Ich habe nie wirklich fand keine Artikel, posts, andere, dass man wirklich entweder den test side-by-side Hölle ich glaube nicht einmal, ich habe nichts gefunden, dass wirklich setzt entweder auf den Prüfstand allein für diese Angelegenheit. Ich persönlich gehe mit dem, was jemals das Bedürfnis (oder Wunsch meiner Kunden) in der Regel ich nur kleben nativen Sitzungen Datei basiert.
Höre ich Sie manipuliert werden können, aber gesehen haben, keine Beweise, um diese Idee zu Datum. Also andere als das, Potenzial ich stick mit der Datei basiert. Es sei denn, ich bin mit einem system wie z.B. code igniter dann Sitzungen scheinen besser zu handhaben DB-Wagen eher nicht.
InformationsquelleAutor chris
Aus meiner kurzen Erfahrung, speichern Sie in
$_SESSION
nur Daten, die Sie NICHT brauchen, um aktualisiert werden, in allen geöffneten Sitzungen, die von einem unique user in verschiedenen Geräten.(mobile/desktop/usw.)
In anderen Worten, Daten, die Sie sicher sind, dass wird sich nie ändern wie ein userID.
Denken Sie daran, dass das default-Verhalten ist, dass
$_SESSION
mit cookie übergeben wird anders sein für jeden browser, selbst wenn diese den gleichen Benutzer angemeldet. Sie wird zu tun haben, einesession_destroy()
zu vermeiden, stecken mit alten Daten.Sehr temporäre Daten gespeichert werden dürfen
$_SESSION
wie gut, denke ich.NB: die grundlegende Notwendigkeit der globalen Sitzung, aus der diese Argumente, ist haben Variablen, die Global verfügbar sind
InformationsquelleAutor micaball