Gottlose Authentifizierungsregistrierung PHP

05.10.2015 Romchik

Guten Tag. In diesem Artikel analysieren wir anhand eines Beispiels die Benutzerregistrierung in . Anschließend aktivieren Sie den Benutzer durch Bestätigung seiner E-Mail-Adresse. Und schließlich die Benutzerautorisierung in . Es sollten jedoch nur aktive Benutzer autorisiert werden.

Als Erstes erstellen wir einen Controller und eine Ansicht für die Registrierung.

Erstellen eines Anmeldeformulars

Gehen Sie in das Verzeichnis mit den Ressourcenvorlagen und erstellen Sie darin das Unterverzeichnis auth. Nun erstellen wir im Auth-Ordner eine Datei register.blade.php mit dem folgenden Code:

Anmeldung

((--Errors--)) @if ($errors->has()) ×
    @foreach($errors->all() als $error)
  • ((( $error )))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

Ich werde den obigen Code nicht erklären, hier ist alles klar.

App/Http/Controllers/Auth/AuthController.php

Wir werden nur die Controller-Methoden von AuthController.php überschreiben. Um das Registrierungsformular anzuzeigen, gibt es also eine getRegister-Methode. Wir berühren diese Methode nicht.

Kommen wir nun zu den Routen. Öffne die Datei:

Und definieren Sie den Weg zu unserer Methode:

Route::get("auth/register", "Auth\AuthController@getRegister");

Öffnen wir nun unsere Anwendung im Browser. Super, wir sehen das Anmeldeformular.

Benutzerregistrierung in

Lassen Sie uns sofort die Route für die Benutzerregistrierung definieren. Gehen wir zur Datei:

App/Http/Controllers/routes.php

Und fügen Sie die folgende Route hinzu:

Route::post("auth/register", "Auth\AuthController@postRegister");

Jetzt erstellen wir eine Tabelle zum Speichern von Benutzern. Für diese Tabelle gibt es bereits eine Migration, diese ist jedoch für uns nicht geeignet. Lass es uns ändern. Gehen wir zur Datei:

Database/migrations/2014_10_12_create_users_table.php

Und ändern wir den Code:

In meinem Fall sieht es so aus:

Speichern Sie bd.php.
Großartig! Wir haben eine Tabelle in der Datenbank und eine Verbindung dazu. Jetzt können Sie mit der Erstellung einer Seite beginnen, auf der Benutzer ihre Daten hinterlassen.

3. Erstellen Sie eine reg.php-Datei mit dem Inhalt (alle Kommentare darin):



Anmeldung


Anmeldung


Dein Login:




Ihr Passwort:








4. Erstellen Sie eine Datei, die Daten in die Datenbank eingibt und den Benutzer speichert. save_user.php (Kommentare darin):

5. Jetzt können sich unsere Benutzer registrieren! Als nächstes müssen Sie eine „Tür“ erstellen, durch die bereits registrierte Benutzer die Site betreten können. index.php (Kommentare darin):




Hauptseite


Hauptseite


Dein Login:


Ihr Passwort:






Registrieren



OK, jetzt ist alles vorbei! Die Lektion mag langweilig sein, aber sehr nützlich. Hier wird nur die Idee der Registrierung gezeigt, dann können Sie sie verbessern: Sicherheit, Design, Datenfelder hinzufügen, Avatare laden, sich von Ihrem Konto abmelden (dazu einfach Variablen aus der Sitzung mit der Unset-Funktion zerstören) und bald. Viel Glück!

Ich habe alles überprüft, es funktioniert einwandfrei!

In diesem Artikel erfahren Sie, wie Sie mit HTML, JavaScript, PHP und MySql ein Registrierungs- und Anmeldeformular erstellen. Solche Formulare werden auf fast jeder Website verwendet, unabhängig von der Art. Sie werden für ein Forum, einen Online-Shop, soziale Netzwerke (wie Facebook, Twitter, Odnoklassniki) und viele andere Arten von Websites erstellt.

Wenn Sie eine Website auf Ihrem lokalen Computer haben, hoffe ich, dass bereits ein lokaler Server installiert ist und läuft. Ohne sie geht nichts.

Erstellen einer Tabelle in der Datenbank

Um die Benutzerregistrierung umzusetzen, benötigen wir zunächst eine Datenbank. Wenn Sie es bereits haben, ist das großartig, andernfalls müssen Sie es erstellen. Im Artikel erkläre ich ausführlich, wie das geht.

Wir haben also eine Datenbank (abgekürzt als DB), jetzt müssen wir eine Tabelle erstellen Benutzer in dem wir unsere registrierten Benutzer hinzufügen.

Ich habe im Artikel auch erklärt, wie man eine Tabelle in einer Datenbank erstellt. Bevor wir eine Tabelle erstellen, müssen wir bestimmen, welche Felder sie enthalten soll. Diese Felder entsprechen den Feldern aus dem Registrierungsformular.

Also dachten wir, stellten uns vor, welche Felder unser Formular haben würde, und erstellten eine Tabelle Benutzer mit diesen Feldern:

  • Ausweis- Kennung. Feld Ausweis Jede Tabelle in der Datenbank sollte es haben.
  • Vorname- Um den Namen zu speichern.
  • Familienname, Nachname- Um den Nachnamen zu bewahren.
  • Email- Um die Postanschrift zu speichern. Wir werden E-Mail als Login verwenden, daher muss dieses Feld eindeutig sein, d. h. den Index UNIQUE haben.
  • email_status- Feld zur Angabe, ob die E-Mail bestätigt ist oder nicht. Wenn die E-Mail bestätigt ist, hat sie den Wert 1, andernfalls ist der Wert 0.
  • Passwort- Um das Passwort zu speichern.


Wenn Sie möchten, dass Ihr Registrierungsformular weitere Felder enthält, können Sie diese auch hier hinzufügen.

Das ist er, unser Tisch Benutzer bereit. Kommen wir zur nächsten Stufe.

Datenbankverbindung

Wir haben die Datenbank erstellt, jetzt müssen wir uns mit ihr verbinden. Wir werden uns mit der PHP-Erweiterung MySQLi verbinden.

Erstellen Sie im Ordner unserer Website eine Datei mit dem Namen dbconnect.php, und schreiben Sie das folgende Skript hinein:

Diese Datei dbconnect.php müssen mit Formularhandlern verbunden werden.

Beachten Sie die Variable $address_site, hier habe ich den Namen meiner Testseite angegeben, an der ich arbeiten werde. Bitte geben Sie den Namen Ihrer Website entsprechend an.

Site-Struktur

Schauen wir uns nun die HTML-Struktur unserer Website an.

Wir werden die Kopf- und Fußzeile der Website in separate Dateien verschieben. header.php Und footer.php. Wir werden sie auf allen Seiten einbinden. Nämlich auf der Hauptseite (Datei index.php), zur Seite mit dem Anmeldeformular (Datei form_register.php) und auf die Seite mit dem Autorisierungsformular (Datei form_auth.php).

Blockieren Sie mit unseren Links, Anmeldung Und Genehmigung, fügen Sie sie dem Site-Header hinzu, damit sie auf allen Seiten angezeigt werden. Ein Link führt zur Seite mit dem Registrierungsformular (Datei form_register.php) und die andere auf die Seite mit dem Autorisierungsformular (Datei form_auth.php).

Inhalt der Datei header.php:

Name unserer Website

Im Ergebnis sieht unsere Hauptseite so aus:


Natürlich kann Ihre Seite auch eine völlig andere Struktur haben, aber das ist für uns jetzt nicht wichtig. Hauptsache, es gibt Links (Buttons) zur Registrierung und Autorisierung.

Kommen wir nun zum Anmeldeformular. Wie Sie bereits wissen, haben wir es in den Akten form_register.php.

Gehen Sie zur Datenbank (in phpMyAdmin) und öffnen Sie die Tabellenstruktur Benutzer und schauen Sie sich an, welche Felder wir brauchen. Das heißt, wir benötigen Felder zur Eingabe des Vor- und Nachnamens, ein Feld zur Eingabe der Postadresse (E-Mail) und ein Feld zur Eingabe des Passworts. Und aus Sicherheitsgründen werden wir ein Feld zur Eingabe eines Captchas hinzufügen.

Auf dem Server können infolge der Verarbeitung des Registrierungsformulars verschiedene Fehler auftreten, aufgrund derer sich der Benutzer nicht registrieren kann. Damit der Benutzer versteht, warum die Registrierung fehlschlägt, ist es daher erforderlich, Meldungen zu diesen Fehlern anzuzeigen.

Fügen Sie vor der Anzeige des Formulars einen Block hinzu, um Fehlermeldungen aus der Sitzung anzuzeigen.

Und noch etwas: Wenn der Benutzer bereits autorisiert ist und aus Neugier direkt zur Registrierungsseite gelangt, indem er in die Adressleiste des Browsers schreibt site_address/form_register.php, dann zeigen wir in diesem Fall anstelle des Registrierungsformulars eine Kopfzeile an, die besagt, dass er bereits registriert ist.

Im Allgemeinen der Dateicode form_register.php wir haben das:

Du bist bereits registriert

Im Browser sieht die Seite mit dem Anmeldeformular so aus:


Mithilfe des erforderlichen Attributs haben wir alle Felder zu Pflichtfeldern gemacht.

Achten Sie auf den Code des Registrierungsformulars, in dem das Captcha angezeigt wird:


Wir haben den Pfad zur Datei im Wert des src-Attributs für das Bild angegeben captcha.php, wodurch dieses Captcha generiert wird.

Schauen wir uns den Dateicode an captcha.php:

Der Code ist gut kommentiert, daher werde ich mich nur auf einen Punkt konzentrieren.

Innerhalb einer Funktion imageTtfText(), wird der Pfad zur Schriftart angegeben verdana.ttf. Damit das Captcha ordnungsgemäß funktioniert, müssen wir einen Ordner erstellen Schriftarten, und platzieren Sie die Schriftartdatei dort verdana.ttf. Sie können es im Internet finden und herunterladen oder mit den Materialien dieses Artikels aus dem Archiv entnehmen.

Wir sind mit der HTML-Struktur fertig, es ist Zeit, weiterzumachen.

Überprüfung der E-Mail-Gültigkeit mit jQuery

Jedes Formular muss die Gültigkeit der eingegebenen Daten überprüfen, sowohl auf der Clientseite (mit JavaScript, jQuery) als auch auf der Serverseite.

Besonderes Augenmerk müssen wir auf das E-Mail-Feld legen. Es ist sehr wichtig, dass die eingegebene Postanschrift gültig ist.

Für dieses Eingabefeld legen wir den E-Mail-Typ (type="email") fest, dieser warnt uns leicht vor falschen Formaten. Dies reicht jedoch nicht aus, denn über den Code-Inspektor, den uns der Browser zur Verfügung stellt, können wir den Attributwert problemlos ändern Typ Mit Email An Text, und das war's, unser Scheck ist nicht mehr gültig.


Und in diesem Fall müssen wir eine zuverlässigere Prüfung durchführen. Dazu verwenden wir die jQuery-Bibliothek von JavaScript.

Um die jQuery-Bibliothek zu verbinden, in der Datei header.php zwischen Tags , vor dem schließenden Tag , fügen Sie diese Zeile hinzu:

Unmittelbar nach dieser Zeile fügen wir den E-Mail-Validierungscode hinzu. Hier fügen wir einen Code hinzu, um die Länge des eingegebenen Passworts zu überprüfen. Die Länge muss mindestens 6 Zeichen betragen.

Mithilfe dieses Skripts überprüfen wir die eingegebene E-Mail-Adresse auf Gültigkeit. Wenn der Benutzer eine falsche E-Mail-Adresse eingegeben hat, zeigen wir eine entsprechende Fehlermeldung an und deaktivieren die Schaltfläche zum Absenden des Formulars. Wenn alles in Ordnung ist, beheben wir den Fehler und aktivieren den Formular-Senden-Button.

Damit sind wir mit der Formularvalidierung auf Kundenseite fertig. Jetzt können wir es an den Server senden, wo wir auch ein paar Prüfungen durchführen und Daten zur Datenbank hinzufügen.

Benutzer Registration

Wir senden das Formular zur Bearbeitung an die Datei registrieren.php, über die POST-Methode. Der Name dieser Handlerdatei wird im Attributwert angegeben Aktion. Und die Sendemethode wird im Attributwert angegeben Methode.

Öffnen Sie diese Datei registrieren.php Und das erste, was wir tun müssen, ist, eine Sitzungsstartfunktion zu schreiben und die zuvor erstellte Datei zu verbinden dbconnect.php(In dieser Datei haben wir eine Verbindung zur Datenbank hergestellt). Lassen Sie uns außerdem sofort die Zellen deklarieren Fehlermeldungen Und success_messages im globalen Sitzungsarray. IN error_messages Wir erfassen alle Fehlermeldungen, die während der Formularverarbeitung auftreten, und in succes_messages, wir werden freudige Botschaften aufzeichnen.

Bevor wir fortfahren, müssen wir prüfen, ob das Formular überhaupt übermittelt wurde. Ein Angreifer kann sich den Attributwert ansehen Aktion aus dem Formular und finden Sie heraus, welche Datei dieses Formular verarbeitet. Und vielleicht kommt ihm die Idee, direkt zu dieser Datei zu gelangen, indem er die folgende Adresse in die Adressleiste des Browsers eingibt: http://site_address/register.php

Daher müssen wir im globalen POST-Array nach einer Zelle suchen, deren Name mit dem Namen unserer Schaltfläche „Registrieren“ aus dem Formular übereinstimmt. Dadurch prüfen wir, ob der Button „Registrieren“ angeklickt wurde oder nicht.

Versucht ein Angreifer direkt auf diese Datei zuzugreifen, erhält er eine Fehlermeldung. Ich möchte Sie daran erinnern, dass die Variable $address_site den Namen der Site enthält und in der Datei deklariert wurde dbconnect.php.

Der Captcha-Wert in der Sitzung wurde bei der Generierung in der Datei hinzugefügt captcha.php. Zur Erinnerung zeige ich Ihnen diesen Code aus der Datei noch einmal captcha.php, wobei der Captcha-Wert zur Sitzung hinzugefügt wird:

Fahren wir nun mit der Verifizierung selbst fort. Im Ordner registrieren.php, innerhalb des if-Blocks, wo wir prüfen, ob auf die Schaltfläche „Registrieren“ geklickt wurde, bzw. wo der Kommentar „ angegeben ist“ // (1) Platz für den nächsten Codeabschnitt"wir schreiben:

//Überprüfen Sie das empfangene Captcha //Entfernen Sie die Leerzeichen am Anfang und Ende der Zeile $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Vergleiche den empfangenen Wert mit dem Wert aus der Sitzung. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Wenn das Captcha nicht korrekt ist, kehren wir den Benutzer zur Registrierungsseite zurück und zeigen ihm dort eine Fehlermeldung an, dass er das falsche Captcha eingegeben hat . $error_message = "

Fehler! Sie haben das falsche Captcha eingegeben

"; // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] = $error_message; // Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: " .$address_site ."/form_register.php"); //Stoppen Sie das Skript exit(); ) // (2) Platz für den nächsten Codeabschnitt )else( //Wenn das Captcha nicht übergeben wird oder leer ist, beenden Sie den Vorgang ("

Fehler! Es gibt keinen Verifizierungscode, also einen Captcha-Code. Sie können zur Hauptseite gehen.

"); }

Als nächstes müssen wir die empfangenen Daten vom POST-Array verarbeiten. Zunächst müssen wir den Inhalt des globalen POST-Arrays prüfen, also ob es dort Zellen gibt, deren Namen mit den Namen der Eingabefelder aus unserem Formular übereinstimmen.

Wenn die Zelle vorhanden ist, schneiden wir die Leerzeichen am Anfang und Ende der Zeile dieser Zelle ab. Andernfalls leiten wir den Benutzer zurück auf die Seite mit dem Registrierungsformular.

Als nächstes, nachdem wir die Leerzeichen gekürzt haben, fügen wir die Zeile zur Variablen hinzu und prüfen, ob diese Variable leer ist. Wenn sie nicht leer ist, fahren wir fort, andernfalls leiten wir den Benutzer zurück auf die Seite mit dem Registrierungsformular.

Fügen Sie diesen Code an der angegebenen Stelle ein. // (2) Platz für den nächsten Codeabschnitt".

/* Überprüfen Sie, ob vom Formular gesendete Daten im globalen Array $_POST vorhanden sind, und packen Sie die übermittelten Daten in reguläre Variablen.*/ if(isset($_POST["first_name"]))( //Leerzeichen vom Anfang abschneiden und Ende der Zeichenfolge $first_name = trim($_POST["first_name"]); //Überprüfen Sie die Variable auf Leere if(!empty($first_name))( // Konvertieren Sie zur Sicherheit Sonderzeichen in HTML-Entitäten $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Gib deinen Namen ein

Das Namensfeld fehlt

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) if( isset($_POST["last_name"]))( // Leerzeichen am Anfang und Ende der Zeile abschneiden $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // Aus Sicherheitsgründen Sonderzeichen in HTML-Entitäten umwandeln $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Bitte geben Sie ihren Nachnamen ein

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) )else ( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Das Feld „Nachname“ fehlt

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) if( isset($_POST["email"]))( //Leerzeichen am Anfang und Ende der Zeile kürzen $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Codespeicherort zum Überprüfen des Formats der E-Mail-Adresse und ihrer Eindeutigkeit )else( // Speichern Sie die Fehlermeldung in der Sitzung. $_SESSION["error_messages"] .= "

Geben sie ihre E-Mail Adresse ein

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) )else ( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) if( isset($_POST["password"]))( // Leerzeichen am Anfang und Ende der Zeichenfolge kürzen $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Das Passwort verschlüsseln $password = md5($password."top_secret"); )else( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Geben Sie Ihr Passwort ein

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) )else ( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) // (4) Platz für den Code zum Hinzufügen eines Benutzers zur Datenbank

Von besonderer Bedeutung ist das Feld Email. Wir müssen das Format der empfangenen Postanschrift und ihre Einzigartigkeit in der Datenbank überprüfen. Das heißt, gibt es einen Benutzer mit derselben E-Mail-Adresse, der bereits registriert ist?

Am angegebenen Ort“ // (3) Code-Standort zur Überprüfung des Formats der Postanschrift und ihrer Eindeutigkeit" Fügen Sie den folgenden Code hinzu:

//Überprüfen Sie das Format der empfangenen E-Mail-Adresse mithilfe eines regulären Ausdrucks $reg_email = "/^**@(+(*+)*\.)++/i"; //Wenn das Format der empfangenen E-Mail-Adresse nicht mit dem regulären Ausdruck übereinstimmt if(!preg_match($reg_email, $email))( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Sie haben eine falsche E-Mail-Adresse eingegeben

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); ) // Wir prüfen, ob eine solche Adresse bereits in der Datenbank vorhanden ist. $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); / /Wenn die Anzahl der empfangenen Daten genau eine Zeile beträgt, bedeutet dies, dass der Benutzer mit dieser E-Mail-Adresse bereits registriert ist if($result_query->num_rows == 1)( //Wenn das resultierende Ergebnis nicht falsch ist if(($row = $result_query->fetch_assoc()) != false) ( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Ein Benutzer mit dieser E-Mail-Adresse ist bereits registriert

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); )else( // Fehlermeldung speichern zur Sitzung . $_SESSION["error_messages"] .= "

Fehler bei der Datenbankabfrage

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) /* Schließen der Auswahl */ $ result_query->close(); //Stoppen Sie das Skript exit(); ) /* Schließen der Auswahl */ $result_query->close();

Nachdem wir alle Prüfungen abgeschlossen haben, ist es an der Zeit, den Benutzer zur Datenbank hinzuzufügen. Am angegebenen Ort“ // (4) Platz für den Code zum Hinzufügen eines Benutzers zur Datenbank" Fügen Sie den folgenden Code hinzu:

//Abfrage zum Hinzufügen eines Benutzers zur Datenbank $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password) VALUES ("".$first_name."", "".$last_name ." ", "".$email.", "".$password."")"); if(!$result_query_insert)( // Fehlermeldung in der Sitzung speichern. $_SESSION["error_messages"] .= "

Fehler bei der Anfrage zum Hinzufügen eines Benutzers zur Datenbank

"; //Den Benutzer zur Registrierungsseite zurückbringen header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Das Skript stoppen exit(); )else( $_SESSION["success_messages"] = "

Registrierung erfolgreich abgeschlossen!!!
Jetzt können Sie sich mit Ihrem Benutzernamen und Passwort anmelden.

"; //Sende den Benutzer zur Autorisierungsseite header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_auth.php"); ) /* Abschließen der Anfrage */ $ result_query_insert->close(); //Verbindung zur Datenbank schließen $mysqli->close();

Wenn bei der Anfrage zum Hinzufügen eines Benutzers zur Datenbank ein Fehler aufgetreten ist, fügen wir der Sitzung eine Nachricht über diesen Fehler hinzu und leiten den Benutzer zur Registrierungsseite zurück.

Andernfalls, wenn alles gut gelaufen ist, fügen wir der Sitzung auch eine Nachricht hinzu, aber dieses Mal ist es angenehmer, nämlich dass wir dem Benutzer mitteilen, dass die Registrierung erfolgreich war. Und wir leiten es auf die Seite mit dem Autorisierungsformular weiter.

Das Skript zur Überprüfung des E-Mail-Adressformats und der Passwortlänge befindet sich in der Datei header.php, daher gilt es auch für Felder aus diesem Formular.

Die Sitzung wird auch in der Datei gestartet header.php, also in der Datei form_auth.php Es ist nicht erforderlich, eine Sitzung zu starten, da sonst eine Fehlermeldung angezeigt wird.


Wie bereits erwähnt, funktioniert hier auch das Skript zur Überprüfung des E-Mail-Adressformats und der Passwortlänge. Wenn der Benutzer daher eine falsche E-Mail-Adresse oder ein falsches Kurzpasswort eingibt, erhält er sofort eine Fehlermeldung. Ein Knopf betreten wird inaktiv.

Nach Behebung der Fehler erscheint die Schaltfläche betreten wird aktiv und der Benutzer kann das Formular an den Server senden, wo es verarbeitet wird.

Benutzerautorisierung

Wert zuschreiben Aktion Für das Berechtigungshandicap ist eine Datei angegeben auth.php, bedeutet dies, dass das Formular in dieser Datei verarbeitet wird.

Öffnen Sie also die Datei auth.php und schreiben Sie Code, um das Autorisierungsformular zu verarbeiten. Als Erstes müssen Sie eine Sitzung starten und die Datei verbinden dbconnect.php um eine Verbindung zur Datenbank herzustellen.

Wenn Sie auf der Website auf den Exit-Link klicken, werden wir zu einer Datei weitergeleitet logout.php, wobei wir einfach die Zellen mit der E-Mail-Adresse und dem Passwort aus der Sitzung zerstören. Danach kehren wir den Nutzer zurück zu der Seite, auf der der Link angeklickt wurde Ausfahrt.

Dateicode logout.php:

Das ist alles. Jetzt wissen Sie, wie Sie Benutzerregistrierungs- und Autorisierungsformulare auf Ihrer Website implementieren und verarbeiten. Diese Formulare sind auf fast jeder Website zu finden, daher sollte jeder Programmierer wissen, wie man sie erstellt.

Wir haben auch gelernt, wie man Eingabedaten validiert, sowohl auf der Clientseite (im Browser, mit JavaScript, jQuery) als auch auf der Serverseite (mit PHP). Wir haben auch gelernt, wie man ein Verfahren zum Verlassen der Website implementiert.

Alle Skripte wurden getestet und funktionieren. Sie können das Archiv mit den Dateien dieser kleinen Site über diesen Link herunterladen.

In Zukunft werde ich einen Artikel schreiben, in dem ich beschreiben werde. Und ich habe auch vor, einen Artikel zu schreiben, in dem ich es erklären werde (ohne die Seite neu zu laden). Um über die Veröffentlichung neuer Artikel auf dem Laufenden zu bleiben, können Sie meine Website abonnieren.

Wenn Sie Fragen haben, wenden Sie sich bitte an mich. Wenn Ihnen im Artikel ein Fehler auffällt, teilen Sie mir dies bitte mit.

Unterrichtsplan (Teil 5):

  • Erstellen einer HTML-Struktur für das Autorisierungsformular
  • Wir verarbeiten die erhaltenen Daten
  • Wir zeigen die Begrüßung des Benutzers im Site-Header an
  • Hat Ihnen der Artikel gefallen?

    Wir erfahren, wie Sie eine einfache Benutzerauthentifizierung auf der Website durchführen. Die Website verfügt möglicherweise nur über Seiten für autorisierte Benutzer und diese funktionieren vollständig, wenn wir ihnen unseren Authentifizierungsblock hinzufügen. Um es zu erstellen, benötigen Sie eine MySQL-Datenbank. Es kann (mindestens) 5 Spalten umfassen, oder mehr, wenn Sie Informationen über Benutzer hinzufügen möchten. Nennen wir die Datenbank „Userauth“.

    Erstellen wir darin die folgenden Felder: ID zum Zählen der Anzahl der Benutzer, UID für die eindeutige Identifikationsnummer des Benutzers, Benutzername für den Namen des Benutzers, E-Mail für seine E-Mail-Adresse und Passwort für das Passwort. Sie können Ihre vorhandene Datenbank verwenden, um den Benutzer zu autorisieren. Erstellen Sie einfach wie bei einer neuen Datenbank die folgende Tabelle darin.

    MySQL-Code

    CREATE TABLE „Benutzer“ („ID“ int (11) NICHT NULL AUTO_INCREMENT, „UID“ int (11) NICHT NULL, Text „Benutzername“ NICHT NULL, Text „E-Mail“ NICHT NULL, Text „Passwort“ NICHT NULL, PRIMÄRSCHLÜSSEL (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Nun erstellen wir die Datei „sql.php“. Es ist für die Verbindung zur Datenbank verantwortlich. Dieser Code erstellt zunächst Variablen für den Server und den Benutzer, wenn er eine Verbindung zum Server herstellt. Zweitens wird die Datenbank ausgewählt, in diesem Fall „USERAUTH“. Diese Datei muss in „log.php“ und „reg.php“ eingebunden sein, um auf die Datenbank zugreifen zu können.

    PHP-Code

    Als nächstes folgt die Anmeldeseite, die „login.php“ heißen soll. Zunächst prüft es die eingegebenen Daten auf Fehler. Die Seite enthält Felder für Benutzername, Passwort, Senden-Button und Registrierungslink. Wenn der Benutzer auf die Schaltfläche „Anmelden“ klickt, wird das Formular durch den Code aus der Datei „log.php“ verarbeitet und anschließend angemeldet.

    PHP-Code

    Login Formular

    Benutzername
    Passwort
    Anmeldung

    Dann schreiben wir ein Skript, um uns beim System anzumelden. Nennen wir es „log.php“. Es verfügt über eine Funktion zum Bereinigen der Eingabedaten von SQL-Injections, die Ihr Skript ruinieren können. Zweitens empfängt es die Formulardaten und prüft diese auf Richtigkeit. Wenn die Eingabedaten korrekt sind, leitet das Skript den Benutzer zur Seite der autorisierten Benutzer weiter. Wenn nicht, setzt es Fehler und leitet den Benutzer zur Anmeldeseite weiter.

    PHP-Code

    Lassen Sie uns eine Registrierungsseite erstellen und sie „register.php“ nennen. Sie ähnelt der Anmeldeseite, verfügt jedoch über einige weitere Felder und anstelle eines Registrierungslinks gibt es einen Link zu login.php, falls der Benutzer bereits ein Konto hat.

    PHP-Code

    Anmeldeformular

    Benutzername
    Email
    Passwort
    Passwort wiederholen
    Ich habe einen Account

    Nun erstellen wir ein Registrierungsskript in der Datei „reg.php“. Es enthält „sql.php“, um eine Verbindung zur Datenbank herzustellen. Zum Löschen des Eingabefeldes wird die gleiche Funktion wie im Login-Skript verwendet. Für mögliche Fehler werden Variablen gesetzt. Als nächstes folgt eine Funktion zum Erstellen einer eindeutigen Kennung, die noch nie zuvor bereitgestellt wurde. Anschließend werden die Daten aus dem Anmeldeformular extrahiert und verifiziert. Dabei wird überprüft, ob die E-Mail-Adresse im richtigen Format vorliegt und das Passwort erneut korrekt eingegeben wird. Das Skript prüft dann, ob es in der Datenbank einen Benutzer mit demselben Namen gibt und meldet gegebenenfalls einen Fehler. Schließlich fügt der Code den Benutzer zur Datenbank hinzu.

    PHP-Code

    Sie müssen außerdem ein Skript erstellen, um den Benutzer vom System abzumelden. Es beendet die Sitzung für den Benutzer mit der angegebenen eindeutigen ID und dem angegebenen Namen und leitet den Benutzer dann zur Anmeldeseite weiter.

    PHP-Code

    Schließlich kann das Skript „auth.php“ verwendet werden, um Seiten nur für autorisierte Benutzer zugänglich zu machen. Es überprüft die Anmeldedaten und ermöglicht dem Benutzer, wenn diese korrekt sind, das Durchsuchen der Seiten. Wenn nicht, wird er aufgefordert, sich anzumelden. Wenn jemand außerdem versucht, die Site zu hacken, indem er eine der Sitzungen erstellt, wird diese unterbrochen, wie im allgemeinen Fall.

    PHP-Code

    Eine der Bedingungen im obigen Code ist Gegenstand der Frage in .

    Der folgende Code muss für autorisierte Benutzer in die Seite eingefügt werden. Er heißt beispielsweise „member.php“, Ihr Code kann jedoch beliebig heißen.

    PHP-Code

    Sie sind berechtigt, auf diese Seite zuzugreifen. Hinausgehen ( )

    Die Benutzerauthentifizierung ist fertig!

    Zuletzt geändert am 5. April 2018 von Vincy.

    Die Benutzeranmeldung und -registrierung ist eine Grundvoraussetzung für alle CMS-Anwendungen. Dies ist die erste Arbeit beim Starten eines Projekts. Eine Anwendung mit Benutzer-Login-Authentifizierung bietet Sicherheit, indem sie anonymen Zugriff verhindert. Es gibt verschiedene Möglichkeiten, die Authentifizierung in unserer Anwendung zu aktivieren, z. B. durch die Aktivierung der OAuth-Anmeldung oder durch die Implementierung von Single Sign-on (SSO) und ähnliche andere Möglichkeiten. In einem früheren Tutorial haben wir gesehen, wie man es implementiert und auch darüber.

    Dieses Beispiel umfasst sowohl die Anmelde- als auch die Registrierungsfunktionen. Ich habe die MySQL-Datenbank zum Speichern der registrierten Mitglieder verwendet. Die Benutzerregistrierung enthält Eingaben, um die Details vom Benutzer zu erhalten. Beim Absenden dieses Formulars werden die Formulardaten an PHP gesendet und in der Datenbank gespeichert. Das Benutzerkennwort wird vor der Speicherung in der Datenbank verschlüsselt. vor dem Posten im PHP-Code. Wenn der Benutzer mit den gültigen Anmeldeinformationen angemeldet ist, können der Benutzer und er fortfahren.

    Benutzerregistrierungsformular

    Dieser Code dient dazu, dem Benutzer das Anmeldeformular anzuzeigen. Wenn der Benutzer das Formular mit seinen Daten abschickt, wird die JavaScript-Funktion aufgerufen, um die Benutzereingaben zu validieren. Nach erfolgreicher Validierung liest der PHP-Code die bereitgestellten Formulardaten, um die Datenbankeinfügung auszuführen.