Wie authentifiziere ich einen Benutzer in PHP / MySQL?

8

So habe ich kürzlich gelernt, wie man einen Benutzernamen und ein Passwort zu einer Datenbank hinzufügt. Meine Datenbank ist usersys und die Tabelle, die Benutzerinformationen speichert, wird userdb genannt. Die Tabelle hat zwei Spalten - Benutzername (primär), Passwort.

Das Anmeldeformular funktioniert gut, gibt die Benutzereingaben in die Datenbank korrekt ein und überprüft auch, ob der Benutzername des Benutzers bereits in der Datenbank ist oder nicht.

Nachdem ich das gesagt habe, frage ich, ob jemand mir helfen könnte, ein Login-Skript zu erstellen. Bisher habe ich Folgendes:

%Vor%

Die POST-Daten stammen von der vorherigen Anmeldeseite. Ich möchte, dass dieses Skript die Tabelle (userdb) überprüft und die Zeile für den Benutzernamen, den der Benutzer aus dem vorherigen Formular eingegeben hat, findet und überprüft, ob das eingegebene Passwort mit dem in der Zeile userdb angegebenen Passwort übereinstimmt.

Ich möchte auch einen Weg, um zu überprüfen, ob der eingegebene Benutzername existiert oder nicht, um dem Benutzer mitzuteilen, dass der eingegebene Benutzername nicht existiert, wenn er nicht in der Tabelle gefunden werden kann.

    
Ólafur Waage 26.03.2009, 13:43
quelle

7 Antworten

12

Dies ist keine direkte Antwort auf diese Frage, sondern ein GUTER Mehrwert. Sie sollten die MYSQL SHA1-Funktion verwenden, um das Passwort vor dem Speichern in der Datenbank zu verschlüsseln.

%Vor%     
TechTravelThink 26.03.2009 14:03
quelle
7

Sie können Sitzungen verwenden. Sitzungen sind globale Variablen, die, wenn sie festgelegt sind, beim Surfen auf der Site beim Benutzer bleiben.

Da Sie PHP lernen, probieren Sie dieses Tutorial auf der offiziellen Website aus.

Was Sie jedoch in der Theorie tun würden, wenn der Benutzername und das Passwort übereinstimmen, legen Sie eine Sitzungsvariable fest

%Vor%

Und dann überprüfen Sie, ob der Benutzer authentifiziert ist.

    
Ólafur Waage 26.03.2009 13:45
quelle
3

Eine Möglichkeit, dies zu tun (DISCLAIMER: nicht unbedingt Best-Practice):

%Vor%

... und auf Seiten, die eine Authentifizierung erfordern:

%Vor%

Lesen Sie mehr über PHP Sitzungen .

    
karim79 26.03.2009 13:56
quelle
2

Ich möchte sowohl $_SESSION als auch MYSQL Checks mit jedem Login-POST verwenden. Dies sollte helfen ein paar Dinge zu starten.

%Vor%

HINWEIS: Sie müssten die Auslagerungsdatei mit session_start() starten und ein separates Session Check-Include erstellen, das mit session_start() und dann Ihren Progressionen, z. if($_SESSION[valid_user] != $userid) etwas tun.

    
Maki 13.02.2012 05:24
quelle
0

Sie können eine select-Anweisung verwenden, um das Passwort für den angegebenen Benutzernamen von MySQL abzurufen. Wenn Sie ein leeres Ergebnis festgelegt haben, haben Sie keinen Benutzernamen in der Tabelle.

Wenn Sie möchten, dass der Benutzer auf mehr als einer PHP-Seite authentifiziert wird, dann können Sie Sitzungen verwenden ( Ссылка ).

Ich denke auch, dass Sie über Sicherheit nachdenken sollten, d. h. SQL Injection verhindern:

%Vor%

und Vermeiden des "Sterbens" (Behandeln von Fehlern und Zurückgeben benutzerfreundlicher Nachrichten aus dem Skript).

    
Razvan Stefanescu 26.03.2009 13:56
quelle
0

Ich würde auch darüber nachdenken, keine Passwörter in Ihrer Datenbank zu speichern. Einweg-Hashes mit MD5 oder SHA1 sind eine Möglichkeit, eine Sicherheitsschicht auf der db-Ebene hinzuzufügen.

Siehe Ссылка oder Ссылка für weitere Informationen .

    
Wayne 26.03.2009 14:01
quelle
0

Ich stimme der Idee zu, wenn ich SESSION-Variablen benutze, während ich den Benutzer authentifiziere.

Die einfache Art, den Benutzer zu authentifizieren, ist wie folgt

%Vor%     
Anand Raj 09.11.2013 16:14
quelle

Tags und Links