Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

So implementieren Sie die E-Mail-Überprüfung für neue Mitglieder

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Haben Sie jemals ein Konto bei einer Website erstellt und mussten Ihre E-Mails überprüfen und auf einen Bestätigungslink klicken, der von der Firma gesendet wurde, um sie zu aktivieren? Dadurch wird die Anzahl der Spam-Accounts stark reduziert. In dieser Lektion lernen wir, wie man genau das macht!


Was werden wir bauen?

Wir werden ein nettes PHP-Anmeldeskript erstellen, mit dem ein Benutzer ein Konto erstellen kann, um Zugang zu einem "Mitgliederbereich" einer Website zu erhalten.
Nachdem der Benutzer sein Konto erstellt hat, wird das Konto gesperrt, bis der Benutzer auf einen Bestätigungslink klickt, den er in seinem E-Mail-Posteingang erhält.


Schritt 1 - Anmeldeseite

Wir brauchen zuerst eine einfache Seite, auf der unsere Besucher ihre Konten registrieren können; Das ist das erste, was wir bauen werden.
Ich möchte Sie daran erinnern, dass dies ein PHP-Tutorial ist und meiner Meinung nach müssen Sie die Grundlagen von HTML kennen, bevor Sie mit PHP fortfahren. Ich werde dem HTML & CSS Kommentare hinzufügen, um jede Codezeile zu beschreiben.

index.php - Dies ist unsere Anmeldeseite mit einem Basisformular.

css/style.css - Dies ist ein Stylesheet für index.php und weitere Seiten.

Wie Sie sehen können, habe ich jeder Zeile einen Kommentar hinzugefügt, der beschreibt, was sie tun. Möglicherweise haben Sie den folgenden Kommentar in der index.php-Datei bemerkt:

Wir werden unser PHP zwischen diesen 2 Zeilen schreiben!


Schritt 2 - Eingabevalidierung

Das erste, was wir bauen werden, ist ein Code, der die Informationen validieren wird. Hier ist eine kurze Liste, die genau beschreibt, was zu tun ist.

  • Wenn das Namensfeld nicht leer ist.
  • Wenn der Name nicht zu kurz ist.
  • Wenn das E-Mail-Feld nicht leer ist.
  • Wenn die E-Mail-Adresse gültig ist, xxx@xxx.xxx

Daher prüfen wir zunächst, ob das Formular übermittelt wird und die Felder nicht leer sind.

Zeit für einen Zusammenbruch! Wir beginnen mit einer IF-Anweisung und validieren zuerst das Namensfeld:

Wenn Sie also das Formular jetzt mit leeren Feldern einreichen, passiert nichts. Wenn Sie beide Felder ausfüllen, führt unser Skript den Code zwischen den Klammern aus.
Jetzt erstellen wir einen Code, der prüft, ob eine E-Mail-Adresse gültig ist. Wenn nicht, geben wir einen Fehler zurück. Lassen Sie uns auch unsere Post-Variablen in lokale Variablen umwandeln:

Wir können jetzt unsere Daten über unsere lokalen Variablen erreichen. Wie Sie sehen können, habe ich auch eine MySQL-Escape-Zeichenfolge hinzugefügt, um MySQL-Injection beim Einfügen der Daten in die MySQL-Datenbank zu verhindern.

"Die Funktion mysql_real_escape_string() gibt Sonderzeichen in einer Zeichenfolge zur Verwendung in einer SQL-Anweisung frei."

Reguläre Ausdrücke

Als nächstes gibt es ein kleines Snippet, das prüft, ob die E-Mail-Adresse gültig ist.

Bitte beachten Sie, dass ich diesen regulären Ausdruck nicht persönlich geschrieben habe, es ist ein kleiner Ausschnitt von php.net.
Im Grunde überprüft es, ob die E-Mail in folgendem Format geschrieben ist:

Jetzt können Sie im Eregi sehen, dass es überprüft, ob die E-Mail Zeichen aus dem Alphabet enthält, ob sie Zahlen oder einen Phantomstrich (_) haben, und natürlich die grundlegenden Anforderungen für eine E-Mail (E-Mail) '@' und ein Punkt)'.' Wenn keines dieser Zeichen gefunden wird, gibt der Ausdruck "false" zurück. Okay, jetzt müssen wir einige grundlegende Fehlermeldungen hinzufügen.

Wie Sie sehen können, haben wir eine lokale Variable "$ msg" erstellt, mit der wir den Fehler oder die Erfolgsmeldung irgendwo auf der Seite anzeigen können.
Und wir werden es zwischen dem Anweisungstext und dem Formular anzeigen.

Fügen Sie dies style.css hinzu, um unsere Statusmeldung etwas zu stylen.


Schritt 3 - Erstellen der Datenbank und Herstellen einer Verbindung

Jetzt müssen wir eine Datenbankverbindung herstellen und eine Tabelle erstellen, um die Kontodaten einzufügen. Gehen wir also zu PHPMyAdmin und erstellen Sie eine neue Datenbank mit den Namensregistrierungen und erstellen Sie ein Benutzerkonto, das Zugriff auf diese Datenbank hat, um Daten einzufügen und zu aktualisieren.

Lassen Sie uns unsere Benutzertabelle mit 5 Feldern erstellen:

Jetzt müssen wir Details für diese Felder eingeben:

Für diejenigen, die diese Daten nicht manuell eingeben möchten, können Sie stattdessen den folgenden SQL-Code ausführen.

Unsere Datenbank ist erstellt, jetzt müssen wir eine Verbindung mit PHP herstellen. Wir schreiben den folgenden Code am Anfang unseres Skripts direkt unter der folgenden Zeile:

Wir verwenden den folgenden Code, um eine Verbindung zum Datenbankserver herzustellen und die Registrierungsdatenbank auszuwählen. (grundlegende MySQL Verbindung)

Nachdem wir eine Verbindung zu unserer Datenbank hergestellt haben, können wir mit dem nächsten Schritt fortfahren und die Kontodetails einfügen.


Schritt 4 - Konto einfügen

Jetzt ist es an der Zeit, die eingereichten Kontoinformationen in unsere Datenbank einzugeben und einen Aktivierungshash zu generieren. Schreibe den folgenden Code unter diese Zeile:

Aktivierungshash

In unserer Datenbank haben wir ein Feld namens Hash erstellt, dieser Hash ist eine 32 Zeichen lange Zeichenfolge. Wir senden diesen Code auch an die E-Mail-Adresse des Benutzers. Sie können dann auf den Link klicken (der den Hash enthält) und wir werden überprüfen, ob er mit dem in der Datenbank übereinstimmt. Lassen Sie uns eine lokale Variable namens $hash erstellen und einen zufälligen md5-Hash generieren.

Was haben wir getan? Nun, wir benutzen die PHP-Funktion "rand", um eine Zufallszahl zwischen 0 und 1000 zu generieren. Als nächstes wird unsere MD5-Funktion diese Nummer in eine 32 Zeichen lange Zeichenfolge verwandeln, die wir in unserer Aktivierungs-E-Mail verwenden werden. Meine Wahl ist, MD5 zu verwenden, weil es einen Hash von 32 Zeichen erzeugt, der sicher ist und in diesem Fall unmöglich zu knacken ist.

Erstellen eines zufälligen Passworts

Als nächstes müssen wir ein zufälliges Passwort für unser Mitglied erstellen:

Fügen Sie die folgenden Informationen mit einer MySQL-Abfrage in unsere Datenbank ein

Wie Sie sehen können, fügen wir alle Daten mit einer MySQL-Escape-Zeichenfolge ein, um jegliche MySQL-Injektion zu verhindern.
Möglicherweise stellen Sie auch fest, dass die MD5-Funktion das zufällige Kennwort in einen sicheren Hash für den Schutz ändert. Beispiel: Wenn eine "böse" Person Zugriff auf die Datenbank erhält, kann sie die Passwörter nicht lesen.

Zum Testen füllen Sie das Formular aus und prüfen Sie, ob die Daten in unsere Datenbank eingefügt werden.


Schritt 5 - Senden Sie die Bestätigungs-E-Mail

Nachdem wir die Informationen in unsere Datenbank eingefügt haben, müssen wir eine E-Mail mit dem Bestätigungslink an den Benutzer senden. Lassen Sie uns dazu die PHP-Funktion "mail" verwenden.

Jetzt bremsen wir die Nachricht ab:

Im obigen Code senden wir eine kurze Beschreibung an unseren Benutzer, die den Benutzernamen und das Passwort enthält - unter Verwendung der lokalen Variablen, die wir bei der Veröffentlichung der Daten erstellt haben.

In diesem Abschnitt des Codes haben wir eine dynamische Verknüpfung erstellt. Das Ergebnis wird wie folgt aussehen:

Wie Sie sehen können, erstellt es eine solide URL, die unmöglich zu erraten ist. Dies ist eine sehr sichere Möglichkeit, die E-Mail-Adresse eines Benutzers zu überprüfen.


Schritt 6 - Kontoaktivierung

Wie Sie sehen, verlinkt unsere URL auf verify.php, also erstellen wir das mit der gleichen Basisvorlage, die wir für index.php verwendet haben.
Entfernen Sie das Formular jedoch aus der Vorlage.

Das erste, was wir tun müssen, ist zu überprüfen, ob wir unsere $_GET-Variablen (E-Mail & Hash) haben

Um die Dinge ein wenig einfacher zu machen, lassen Sie uns unsere lokalen Variablen zuweisen und einige MySQL-Injection-Prevention hinzufügen, indem Sie erneut die MySQL-Escape-Zeichenfolge verwenden.

Als nächstes überprüfen Sie die Daten aus der URL anhand einer MySQL-Abfrage mit den Daten in unserer Datenbank.

Im obigen Code haben wir eine MySQL-Select-Anweisung verwendet und geprüft, ob die E-Mail und der Hash übereinstimmen. Darüber hinaus haben wir überprüft, ob der Status des Accounts "inaktiv" ist. Schließlich verwenden wir mysql_num_rows, um zu ermitteln, wie viele Übereinstimmungen gefunden wurden. Also lasst es uns ausprobieren. Verwenden Sie einfach ein einfaches Echo, um die Ergebnisse zurückzugeben.

Wir haben ein Match! Um das Ergebnis zu ändern, ändern Sie einfach die E-Mail und Sie werden sehen, dass die zurückgegebene Zahl 0 ist.
Wir können unsere Variable $match verwenden, um entweder das Konto zu aktivieren oder einen Fehler zurückzugeben, wenn keine Übereinstimmung gefunden wurde.

Um das Konto zu aktivieren, müssen wir das aktive Feld mit einer MySQL-Abfrage auf 1 setzen.

Daher verwenden wir die gleichen Suchbegriffe für das Update wie in unserer MySQL-Select-Abfrage. Wir ändern aktiv zu 1, wo die E-Mail, der Hash und das aktive Feld = 0 übereinstimmen. Wir geben auch eine Nachricht zurück, die dem Benutzer mitteilt, dass sein Konto aktiviert wurde. Sie können eine Nachricht, wie wir sie hier gemacht haben, zum "no match" -Teil hinzufügen. Der endgültige Code sollte also ähnlich aussehen:

Wenn Sie verify.php ohne Strings besuchen, wird der folgende Fehler angezeigt:


Schritt 7 - Einloggen

In diesem letzten Schritt zeige ich Ihnen, wie Sie ein einfaches Login-Formular erstellen und prüfen, ob das Konto aktiviert ist. Erstellen Sie zunächst eine neue Datei namens login.php mit der Basisvorlage, die wir vorher verwendet haben, aber dieses Mal habe ich das Formular in ein Login-Formular geändert.

Das Formular ist grundlegend HTML, und fast das gleiche wie das Anmeldeformular, ist keine weitere Erklärung erforderlich. Jetzt ist es an der Zeit, den Code für das Login-Skript zu schreiben, den wir direkt unter dem MySQL-Verbindungscode schreiben werden. Wir beginnen mit etwas, das wir auch in der Anmeldeform gemacht haben.

Also überprüfen wir zuerst, ob die Daten gepostet werden, und wir stellen sicher, dass sie nicht leer sind.
Als Nächstes erstellen Sie einige lokale Variablen für die Post-Daten:

Wir haben die lokalen Variablen erstellt und das Passwort in einen md5-Hash geändert, um es mit dem Passwort-Hash zu vergleichen, den wir in der Datenbank gespeichert haben.
Jetzt ist es an der Zeit, die Verbindung zu unserer Tabelle "users" herzustellen und zu überprüfen, ob die eingegebenen Daten korrekt sind.

Wir haben eine MySQL-Abfrage geschrieben, die den Benutzernamen, das Passwort und aktive Informationen aus unserer Datenbank auswählt, wenn Benutzername und Passwort übereinstimmen.
AND active = '1' ist! WICHTIG!, dies stellt sicher, dass Sie sich nur anmelden können, wenn Ihr Konto aktiviert ist. Wir verwenden die MySQL-Nummernzeilen erneut, um zu sehen, wie viele Übereinstimmungen gefunden werden.

Im obigen Code überprüfen wir, ob der Login erfolgreich war oder nicht.


Das Ende

Und das ist das Ende dieses Tutorials! Ich hoffe, es hat Ihnen gefallen, und wenn Sie dies getan haben, hinterlassen Sie bitte einen Kommentar!

  • Folgen Sie uns auf Twitter, oder abonnieren Sie den NETTUTS RSS-Feed für mehr tägliche Web-Entwicklungstuts und -artikel.
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.