Login mit PHP

Benutzerverwaltung für die eigene Website

Die meisten Webhosting-Tarife stellen eine MySQL-Datenbank zur Verfügung, allerdings machen nicht alle Website-Betreiber davon Gebrauch. Gerade aber für eine Benutzerverwaltung macht es Sinn, diese mit PHP über eine Datenbank aufzubauen. PC Magazin zeigt Ihnen die Skripte, mit denen Sie neue Benutzer registrieren und mit denen sich bereits registrierte Benutzer auf der Website anmelden.

  1. Benutzerverwaltung für die eigene Website
  2. HTML-Formulare
Benutzerverwaltung für die eigene Website

© Hersteller

Benutzerverwaltung für die eigene Website

Schritt 1: Erstellen und konfigurieren Sie die Datenbank

Im Beispiel gehen wir von Benutzernamen und E-Mail-Adresse aus, Sie können nach Belieben weitere Felder aufnehmen. Mit dem Tool phpMyAdmin, das von fast allen Providern zur Verfügung gestellt wird, ist die passende Datenbank im Handumdrehen eingerichtet.

Im Kunden-Konfigurationsmenü Ihres Providers finden Sie nach dem Einloggen einen Menüpunkt MySQL-Datenbanken. Dort können Sie eine neue Datenbank erzeugen. Meist werden Sie zunächst aufgefordert, ein Passwort für die neue Datenbank zu wählen. Nach dem Erstellen der Datenbank erscheint auf der Seite unter anderem der MySQL-Benutzername.

software, tools, sql, php

© Hersteller/Archiv

Eine MySQL-Datenbank erzeugen Sie in Ihrem Konfigurationsmenü des Providers (hier 1blu).

phpMyAdmin finden Sie bei Ihren Homepage-Tools. Im erscheinenden Anmelde-Dialog geben Sie den MySQL-Benutzernamen und das Passwort ein. Die Datensätze werden bei relationalen Datenbanksystemen in Tabellen gespeichert.

In diesem Beispiel kommen Sie mit einer Tabelle aus. Um diese anzulegen, wählen Sie im linken Bereich von phpMyAdmin die eben erstellte Datenbank aus, geben anschließend unter Neue Tabelle in Datenbank erstellen einen Namen für die Tabelle und die Anzahl der benötigten Felder ein, in unserem Fall zwei.

Schritt 2: Definieren Sie die einzelnen Felder der Tabelle

Erstellen Sie die Felder Benutzer und Email. Da das Feld, das die E-Mail-Adresse enthält, eindeutig sein soll, sehen Sie für dieses einen Primärschlüssel vor. Setzen Sie dazu das Listenfeld Index auf PRIMARY. Damit stellen Sie sicher, dass in der Datenbank dieselbe E-Mail-Adresse nicht zweimal gespeichert werden kann.

Für den Benutzernamen, der ja ebenfalls eindeutig sein soll, werden wir das später im Skriptcode prüfen. Felder mit dem Datentyp VARCHAR sind für beliebige Zeichenfolgen vorgesehen, die sowohl Ziffern, Buchstaben und auch Sonderzeichen enthalten können. Die Anzahl der Zeichen beschränken Sie mit den Angaben in der Spalte Länge/Set. Die Kontrollkästchen in der NULL-Zeile lassen Sie leer. Das bedeutet, dass die beiden Felder beim Anlegen eines neuen Datensatzes immer ausgefüllt werden müssen.

Um die Definition eines Feldes nachträglich zu ändern, klicken Sie in der Strukturansicht in der Spalte Aktion neben dem Feld auf das Stift-Symbol. Um ein Feld aus der Tabelle zu entfernen, klicken Sie auf das rote Kreuz. Möchten Sie der Tabelle weitere Felder hinzufügen, geben Sie neben Felder hinzufügen die Anzahl und weitere Optionen ein.

Schritt 3: Nutzen Sie PHP-Skript zum Registrieren neuer Benutzer

Sie können Benutzerdaten von Hand in die Tabelle eingeben, professioneller erledigen Sie dies jedoch per PHP-Skript. Stellen Sie Ihren Besuchern ein Registrierformular zur Verfügung. Der HTML-Code könnte, bezogen auf die eben erstellte MySQL-Datenbank, in etwa wie folgt aussehen

<form action = "registrieren.php"
method = "post">
Ihre E-Mail-Adresse:<br><input name = "emai" size = "35",
maxlength = "25"><p>W&auml;hlen Sie einen Benutzer
namen:</br><input name = "benutzer" size =
"20", maxlength = "15"></p><input type = "submit" value = "Sen
den"></form>

Im aufgerufenen Skript registrieren.php holen Sie sich als Erstes die eingegebenen Formulardaten und speichern sie in den Variablen $email und $benutzer.

$email = $_POST["emai"];
$benutzer = $_POST["benutzer"];

Schritt 4: Arbeiten Sie mit MySQLi

Für die Interaktion mit der MySQL-Datenbank im Scriptcode verwenden Sie am besten die Erweiterung MySQLi (das i steht für improved), das mit PHP 5 zur Verfügung steht. Die Verbindung zur MySQL-Datenbank stellen Sie her, indem Sie der Konstruktormethode des mysqli-Objekts als Parameter den Namen des Datenbankservers (Host), den Namen des MySQL-Benutzers, das MySQL-Passwort und den Datenbanknamen übergeben.

Die entsprechenden Angaben finden Sie, wie oben beschrieben, in Ihrem Kundenkonfigurationsmenü. Im Beispiel würde der Aufruf also

$mysqli = new mysqli("mysql9.1blu.
de", "s39602_1598556", "<Passwort>", "db39602x1598556");
software, tools, sql, php

© Hersteller/Archiv

Mit phpMyAdmin erzeugen Sie die Felder benutzer und email.

lauten, wobei <Passwort> als Platzhalter zu verstehen ist. Diese Anweisung müssen Sie entsprechend anpassen. Mit der Eigenschaft connect_error, prüfen Sie, ob die Verbindung zustande gekommen ist. Ist das nicht der Fall, beenden Sie das Skript mit der exit()-Anweisung. Ist die Verbindung zur Datenbank hergestellt, dann senden Sie mit der query()-Methode des $mysqli-Objekts die SQL-Abfrage SELECT benutzer, email FROM Forumsmitglieder gegen die Datenbank (Forumsmitglieder ist im Beispiel der Tabellenname).

Als Rückgabewert des Aufrufs erhalten Sie ein Objekt vom Typ $mysqli_result, welches alle Datensätze mit den Werten für die Felder benutzer und email in Form eines Arrays enthält. Die Klasse $mysqli_result stellt wiederum die Methode fetch_array() zur Verfügung, mit der Sie, beginnend mit dem ersten, nacheinander auf alle Datensätze zugreifen und zwar so lange, bis der Rückgabewert dieser Methode NULL, also kein weiterer Datensatz mehr vorhanden ist.

$forumsmitglieder = $mysqli->query("SELECT benutzer, email FROM Forumsmitglieder");
$anzumeldenderBenutzer = $forumsmit
glieder->fetch_array();
while($anzumeldenderBenutzer != NULL)
{ if($anzumeldenderBenutzer["benutze
r"] == $benutzer)
{ echo "Der Benutzername $benutzer
existiert bereits</br>";
echo "<a href = ,registrieren.
htm'>Hier geht's wieder zum Registrierformular</a></br>";
$mysqli->close();
exit(); }
$anzumeldenderBenutzer = $forumsmit
glieder->fetch_array(); }

Innerhalb der while-Schleife prüfen Sie, ob der angegebene Benutzername bereits existiert. In diesem Fall schließen Sie die Verbindung zur Datenbank und beenden das Skript, ohne den Benutzer zu registrieren. Erreicht die Skriptausführung das Ende der while-Schleife, bedeutet dies, dass der Benutzer noch nicht in der Datenbank eingetragen war. In diesem Fall fügen Sie die im Formular eingegebenen Daten mit dem SQL-INSERT-Befehl hinzu, den Sie im PHP-Code wiederum mit der query()-Methode abschicken.

$neuesMitglied = "INSERT INTO Forums
mitglieder (benutzer, email) VALUES ('$benutzer', '$email')";
$mysqli->query($neuesMitglied);

Als Letztes prüfen Sie noch, ob der Datensatz tatsächlich hinzugefügt wurde (if($mysqli->affected_rows != 1 - die Methode affected_rows() liefert die Anzahl der hinzugefügten Datensätze zurück). Das ist nach der Skriptlogik dann nicht der Fall, wenn dieselbe E-Mail-Adresse bereits in der Datenbank für einen anderen Benutzer gespeichert war.

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…