Zum Inhalt springen
Der Guide für ein smartes Leben.
VG Wort Pixel
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.

Autor: Walter Saumweber • 3.4.2012 • ca. 4:20 Min

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

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 Handumdreh...

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
Eine MySQL-Datenbank erzeugen Sie in Ihrem Konfigurationsmenü des Providers (hier 1blu).
© Hersteller/Archiv

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
Mit phpMyAdmin erzeugen Sie die Felder benutzer und email.
© Hersteller/Archiv

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.