2009-08-13 4 views
0

Diese Antwort basiert auf this answer. Cha verwendet Arrays im Speicher Login-Info im Gegensatz zu meinem Code.Warum ein Array zum Speichern von login -info von PHP verwenden?

Es verbessert wahrscheinlich die Effizienz beim Durchsuchen der Login-Daten und hält Ihre Daten organisiert. Allerdings bin ich nicht sicher, ob dies die beste Datenstruktur beim Speichern aller Teile der Login-Informationen ist.

Meine Lösung ruft immer Passhash aus der Datenbank ab, wenn sie die Informationen benötigt, und zerstört sie dann nach der Verwendung, anstatt sie in PHP für Sitzungen in das Array zu speichern. Es behält auch alle Variablen als unabhängige Variablen. Es verwendet stark PostgreSQL im Gegensatz zur Datenbearbeitung durch eine Skriptsprache.

Welches sind die Vor- und Nachteile der Verwendung von Arrays in PHP zum Speichern von Anmeldedaten?

[Bearbeiten]

Ich verwende den folgenden Code zur Zeit in die Daten aus der Datenbank zu bekommen.

$result = pg_prepare($dbconn, "query22", "SELECT passhash_md5 FROM users 
     WHERE email=$1;");                              
$passhash_md5 = pg_execute($dbconn, "query22", array($_REQUEST['email'])); 

Also sollte es zu PDO geändert werden, um es besser zu machen. Studieren, dass.

+0

Vielen Dank für Ihre Antworten! –

Antwort

1

Das war nur eine Frage der Präferenz, es spielt wirklich keine Rolle. Eine mögliche Verwendung ist jedoch eine Art Namespace. Stellen Sie sich vor, Sie haben zwei Formulare auf einer Seite: Loggen Sie sich ein und registrieren Sie sich. Offensichtlich haben diese Formulare zumindest ein Feld für Benutzername und Passwort. Um zwischen den beiden zu unterscheiden, könnten Sie die Felder register [Benutzername] und login [Benutzername] (dito mit Passwort) haben, damit Sie erkennen können, welche welche ist.

Verwenden Sie auch nicht die SQL-Abfrage in Ihrer anderen Frage. Ist Ihnen klar, dass Sie die GESAMTE Benutzer-Tabelle jedes Mal zurückgeben, wenn sich jemand anmeldet? Stellen Sie sich vor, was passiert, wenn Sie 100.000 Benutzer auf Ihrer Website haben ... Ihre Logins würden Minuten dauern und Ihre Datenbank würde in die Knie gezwungen werden. Ich denke, du solltest etwas Grundlegendes lernen, bevor du damit anfängst.

Schauen Sie auch in die Verwendung von PDO anstelle der prozeduralen Datenbankfunktionen. PDO ist sauberer, einfacher und kann in einigen Fällen schneller sein.

+0

Meinst du meine Antwort oder die andere Frage? –

+0

Nun, ich bezog mich auf die SQL von Ihrer Antwort, aber ich merke, dass Sie gerade kopiert haben, was das OP hatte. Ich werde für Klarheit bearbeiten. – ryeguy

+0

Nur überprüfen, um sicherzustellen, dass ich keinen Fehler in meiner Antwort gemacht habe :) –

2

Die Vorteile von Daten mit einem Session-basierten Login-System ist die Tatsache, dass es nicht die Datenbank sehr hart trifft. Datenbanken sind eine einzelne Entität, da Sie eine Verbindung zur Datenbank und einer Tabelle herstellen. Wenn Sie Millionen von Seiten haben, können die Dinge schwierig werden.

Auf der anderen Seite, wenn Sie Material in einem Session-Array speichern, haben Sie viele kleine Dateien, die jeweils ihre eigenen separaten Entitäten sind und auf die nur ein einziger Besucher pro Seite Zugriff hat.

Sitzungsdateien sind auch kleiner und einfacher zu greifen. In einer Datenbank müssen Sie viele Datensätze durchsuchen (wenn Sie viele Benutzer haben) und den spezifischen Datensatz finden. Im Gegensatz dazu erfassen Sitzungen einfach die Daten in einer bestimmten Datei für diese bestimmte Sitzung.


Gehen von dem, was Ryeguy hinzugefügt. Ich würde sehr empfehlen gegen wählen Sie jeden Datensatz, und dann eine while Schleife durch sie, um den richtigen Benutzer zu finden. Ich würde vorschlagen, schauen Sie sich die Where-Anweisung, so können Sie die Datenbank nur geben Sie den Datensatz, der den Benutzernamen des Benutzers entspricht.

Verwandte Themen