Anmeldung eines Benutzers mit einer Anbindung an eine MySQL-Datenbank
Zunächst benötigt man ein Formular, damit die Daten eingegeben werden können.
Dies ist in der Datei "anmeldung.php":
<html>
<head>
<title>Anmeldung</title>
</head>
<body>
<table border=0 CELLPADDING=2>
<form method="post" action="new_user.php">
<tr><td>Nickname:</td><td> <input type="text" name="nick" size="20" maxlength="25"> (Min. 3, max. 25 Zeichen)</td></tr>
<tr><td>E-Mail:</td><td><input type="text" name="email" size="20"></td></tr>
<tr><td>Passwort:</td><td><input type="password" name="pass1" size="20"> (Min. 6 Zeichen)</td>
<tr><td>Bestätigung:</td><td><input type="password" name="pass2" size="20"></td></tr>
<tr><td>Richtiger Name:</td><td><input type="text" name="name" size="20"></td>
<tr><td colspan=2><div align=right><input type="submit" value="Anmelden!" Size="20"></div></td></tr>
</form></table><p></p> ";
</body>
</html>
Falls falsche oder fehlende Informationen auftreten, wird auf dieses Formular zurückgeleitet.
Deswegen bauen wir die zurückgeschickten Variablen wieder ein.
$nick = $HTTP_POST_VARS["nick"];
$email = $HTTP_POST_VARS["email"];
$name = $HTTP_POST_VARS["name"];
$pass1 = $HTTP_POST_VARS["pass1"];
$pass2 = $HTTP_POST_VARS["pass2"];
Der Variablen $nick wird der über POST übermittelte Wert gegeben. In der eckigen Klammer steht der Name des Formular-Feldes, in dem der Wert gestanden hat. Dies ist das "Auffangen" der übermittelten Daten.
Dann müssen wir noch in das Formular die Werte eintragen. Das geht mit dem Attribut "value".
Da es sich um eine PHP-Variable handelt, kann es nicht in purem HTML ausgegeben werden.
Das Nickname-Feld hat eine "maxlength" von 25 - es dürfen max. 25 Zeichen eingegeben werden.
Das komplette Skript für "anmeldung.php":
$nick = $HTTP_POST_VARS["nick"];
$email = $HTTP_POST_VARS["email"];
$name = $HTTP_POST_VARS["name"];
$pass1 = $HTTP_POST_VARS["pass1"];
$pass2 = $HTTP_POST_VARS["pass2"];
echo "
<p></p>
<table border=0 CELLPADDING=2>
<form method=\"post\" action=\"new_user.php\">
<tr><td>Nickname:</td><td> <input type=\"text\" name=\"nick\" value=\"$nick\" size=\"20\" maxlength=\"25\"> (Min. 3, max. 25 Zeichen)</td></tr>
<tr><td>E-Mail:</td><td><input type=\"text\" name=\"email\" value=\"$email\" size=\"20\"></td></tr>
<tr><td>Passwort:</td><td><input type=\"password\" name=\"pass1\" value=\"\" size=\"20\"> (Min. 6 Zeichen)</td>
<tr><td>Bestätigung:</td><td><input type=\"password\" name=\"pass2\" value=\"\" size=\"20\"></td></tr>
<tr><td>Richtiger Name:</td><td><input type=\"text\" name=\"name\" value=\"$name\" size=\"20\"></td>
<tr><td colspan=2><div align=right><input type=\"submit\" value=\"Anmelden!\" Size=\"20\"></div></td></tr>
</form></table><p></p> ";
-------------------------------------------------------------------------------------------
*******************************************************************************************
-------------------------------------------------------------------------------------------
Nun folgt die Datei, die prüft, ob die Daten richtig und komplett eingegeben wurden.
echo "<html><head><title>Anmeldungsbestätigung</title></head><body>";
$nick = $HTTP_POST_VARS["nick"];
$email = $HTTP_POST_VARS["email"];
$pass1 = $HTTP_POST_VARS["pass1"];
$pass2 = $HTTP_POST_VARS["pass2"];
$name = $HTTP_POST_VARS["name"];
//Zunächst werden die Daten des Formulars "aufgefangen" und als Variable registriert.
//Nun wird geprüft, ob der Username bereits registriert ist. Dazu wird in der Datenbank gesucht.
include("connect_db.php");
//Diese Datei soll den Verbindungsaufbau zur Datenbank beinhalten. Dazu gibts entweder andere Tutorials oder eine PN an mich.
$result = mysql_query("SELECT UserID FROM member WHERE nickname='$nick' ");
//Diese Abfrage trifft auf meine Benutzung der Datenbank zu, die ich weiter unten erläutere.
while ($zeile = mysql_fetch_array($result))
{
$UserID = $zeile[0];
}
//Hier wird die UserID (Schlüssel der Datenbank, auto_increment) des Users gesucht, der diesen Nickname hat.
//Wenn dieser vorhanden ist, dann wird ausgegeben, dass der Nickname vorhanden ist - man muss zurück.
if ($UserID) {
die ("Nickname ist schon vorhanden. <br>
<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"submit\" value=\"zurück\" Size=\"20\"></form>
");
}
//Dies ist ein unsichtbares Formular, welches den echten Namen und die E-Mail enthält.
//Diese werden im ersten Forumlar wieder ausgegeben.
//Der Nickname ist vergeben, also muss dieser nicht übermittelt werden.
//Passwörter übermittle ich generell nicht gerne häufiger.
// Jetzt wird geprüft, ob der User überhaupt einen Nickname eingegeben hat:
elseif (!$nick) {
echo "Kein Nickname eingegeben!";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
<input type=\"submit\" value=\"zurück\" Size=\"20\"></form>";
}
//Erneut werden nur die Daten ans andere Formular gegeben, die sinnvoll sind.
// Ist der Nickname lang genug?
$laengenick = strlen($nick); //Zählen der Zeichen des Nicks
$a = 3; //Untergrenze der Zeichen angeben
elseif ($a > $laengenick) {
echo "Nickname ist zu kurz!";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
<input type=\"submit\" value=\"zurück\" Size=\"20\"></form>";
}
// Wenn diese If-Abfragen "bestanden" sind, ist der Nickname als ok angesehen.
/*
--------------------------------------------------------------------------------
********************************************************************************
--------------------------------------------------------------------------------
*/
//Nun kommt die E-Mail an die Reihe.
//Es gibt auch komplizierte Mail-Prüfsysteme, das wäre Stoff für weitere Tutorials.
//Hier wird sich beschränkt auf die Prüfung, ob überhaupt etwas in das Feld eingegeben wurde.
//Es könnte auch einfach "Lima-City" eingegeben werden.
//Dies könnte durch eine Account-Aktivierung per Mail verhindert werden. (Auch Stoff für ein anderes Tut ;-) )
if (!$email) {
echo "Keine E-Mail-Adresse eingegeben!";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
<input type=\"submit\" value=\"zurück\" Size=\"20\"></form>";
}
/*
--------------------------------------------------------------------------------
********************************************************************************
--------------------------------------------------------------------------------
*/
// Prüfung des Passworts
elseif ($pass1 != $pass2) {
echo ("Das Passwort und die Bestätigung stimmen nicht überein! <br> ");
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
<input type=\"submit\" value=\"Zurück zur Anmeldung\" Size=\"20\"></form>";
}
//Wenn die Passwörter nicht gleich sind, wird auf die 1. Seite verwiesen.
$laengepass = strlen($pass1); //Zählen der Buchstaben der 1. Passwort-Eingabe
$b = 6; //minimale Passwort-Länge
elseif ($b > $laengepass) {
echo "Passwort ist zu kurz!";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
<input type=\"submit\" value=\"Zurück zur Anmeldung\" Size=\"20\"></form>";
}
//Wenn das Passwort lürzer als $b (hier 6) ist, dann ist das Passwort zu kurz. Man muss zurück.
/*
--------------------------------------------------------------------------------
********************************************************************************
--------------------------------------------------------------------------------
*/
//Nun wird noch der richige Name geprüft. Natürlich kann er auch komplett weggelassen werden.
$anzahl1 = substr_count("$name", "1");
// Es wird gezählt, wie oft die "1" in der Variable $name vorkommt.
elseif (0 < $anzahl1) {
echo "Richtiger Name ist falsch!";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"submit\" value=\"Zurück zur Anmeldung\" Size=\"20\"></form>";
}
//Wenn dies mehr als ein Mal ist, kann es kein Name sein - man muss zurück
//Oder habt ihr schonmal jemanden gesehen, der Peter1 Müller heißt??
/*
--------------------------------------------------------------------------------
********************************************************************************
--------------------------------------------------------------------------------
*/
//Letztendlich, wenn alle Bedingungen erfüllt sind, muss man die Daten nocheinmal bestätigen.
else{
echo "Dies sind Ihre angegebenen Daten:<br><br>";
echo "Nickname: $nick <br> Richtiger Name: $name <br> E-Mail: $email <br> Passwort: $pass1 <br><br>";
echo "<form method=\"post\" action=\"user_into_database.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
<input type=\"hidden\" name=\"pass1\" value=\"$pass1\" size=\"20\"><br>
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
Ich bin einverstanden und möchte mich entgültig anmelden! <input type=\"submit\" value=\"Eintragen\" Size=\"20\"></form>";
echo "<form method=\"post\" action=\"anmeldung.php\">
<input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
<input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\"> <br>
<input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
Ich möchte meine Daten nocheinmal ändern! <input type=\"submit\" value=\"zurück\" Size=\"20\"></form>";
}
//Das Passwort wird mitangegeben. Aber nur dieses eine Mal, wenn man es noch ändern will, wird es schon nichtmehr übermittelt.
echo "</body></html>";
Immer wenn eine Bedingung nicht erfüllt wurde, muss man zurück auf das Anfangsformular.
Jetzt fehlt nur noch die letzte Seite, die, die Neuanmeldung in die Datenbank einträgt.
In der Datenbank muss dazu eine Tabelle eingerichtet sein, die ich "member" benannt habe.
Die Spalten sind:
- UserID (Der Primärschlüssel, mit auto_increment, also automatischer Erhöhung der ID). Ich habe int(5) zugewiesen
- nickname varchar(25) (also die max. Zeichenzahl) - logisch: Der Nick des Users
- realname varchar(40)
- email tinytext
- password text
- registerdate datetime
Diese Spalten habe ich in PHPmyADMIN eingerichtet, einfach sich durch die Menüs leiten lassen.
Das ist idiotensicher ;-)
Gut, dann hier der Code von "user_into_database.php":
echo "<html><head><title>Registrierung</title></head><body>";
$nick = $HTTP_POST_VARS["nick"];
$email = $HTTP_POST_VARS["email"];
$pass1 = $HTTP_POST_VARS["pass1"];
$name = $HTTP_POST_VARS["name"];
$coded = md5($pass1);
//Das Passwort wird verschlüsselt.
include("connect_db.php");
// Verbindung zur Datenbank aufbauen, in connect_db.php muss das geschehen.
$result = mysql_query("SELECT NOW() ");
while ($zeile = mysql_fetch_array($result))
{
$jetzt = $zeile[0];
}
//Es wird der jetzige Zeitpunkt vom MySQL-Server angefordert und in $jetzt gespeichert.
$result = mysql_query ("INSERT INTO member (nickname, realname, email, password, status, registerdate) VALUES ('$nick', '$name', '$email', '$coded', 'user', '$jetzt' )");
//Alle Informationen werden in die Tabelle member in die einzelnen Spalten "nickname, realname...." eingetragen.
//Mit den Daten $nick, $name...
if ($result == TRUE) {
echo "Die Anmeldung war erfolgreich! <br>";
echo "<center>Hallo $nick , du bist jetzt registriert!" ;
//Hier könnte jetzt ein Link zum Login sein.
}
else {
echo "Der Registriervorgang war nicht erfolgreich!";
}
echo "</body></html>";
Bei Fragen bitte einfach eine PN schreiben.
Viel Spaß beim Benutzen,
Mit freundlichen Grüßen
lagerhaus