Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Tutorials und FAQ (https://www.gegen-bilderklau.net/board.php?boardid=45)
----- [PHP & MySQL] User-Registration mit PHP und MySQL (https://www.gegen-bilderklau.net/thread.php?threadid=179611)


Geschrieben von brain_surgery am 10.04.2011 um 17:06:

  User-Registration mit PHP und MySQL

@Mods: Bitte verschieben!
User-Registration mit PHP und MySQL
Hallo Leute!
Seit längerem schon wollte ich ein solches Tutorial machen, und schlussendlich konnte ich mich dazu aufraffen. Falls Fehler oder Fragen aufkommen sollten zögert bitte nicht, zu fragen!

Vorwort
Dieses Tutorial zeigt, wie man ganz leicht eine Anmeldung für Mitglieder für die eigene Homepage realisieren kann. Man braucht dazu lediglich einen PHP-fähigen Server mit FTP und der Möglichkeit, MySQL-Datenbanken anzulegen. Wie auch mein Login-Skript schon ist es größtenteils Plug&Play, kann also ohne programmiertechnische Vorkenntnisse eingebaut werden. Erwähntes Login-Skript ist auch für die Verwendung mit dieser Registration vorgesehen, am Ende des eigentlichen Tutorials werde ich euch erklären, wie ihr das Login-Skript anpassen müsst, damit ihr es mit diesem hier verwenden könnt.

Alle nötigen Dateien findet ihr im Anhang!

Also, ohne weitere Umschweife: Los geht's!

1. Datenbank vorbereiten
In meinem anderen Tutorial (Link) erkläre ich, wie man eine Datenbank von Hand bearbeiten und Tabellen und Datensätze einfügen kann. Diesen Teil will ich mir deswegen diesmal sparen, er ist für dieses Tutorial auch nicht unbedingt nötig, da wir die benötigte Tabelle automatisch erstellen und mit Zeilen füllen werden.

Der erste Schritt besteht also darin, dass wir die Tabelle anlegen, mit der unser Skrip nachher arbeiten soll. Wir machen dies mit einem SQL-Befehl, den ihr direkt in phpMyAdmin ausführt.

Kopiert diesen Code und führt ihn in eurer Datenbank aus.
VORSICHT: Wenn sich bereits eine Tabelle mit dem Namen "mitglieder" in der Datenbank befindet, wird diese gelöscht!
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
DROP TABLE IF EXISTS mitglieder;

CREATE TABLE mitglieder (
id INTEGER UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(255) UNIQUE NOT NULL,
passwort VARCHAR (255) NOT NULL,
funktion VARCHAR(255) NOT NULL DEFAULT 'Mitglied',  -- Mitglied oder Admin
email VARCHAR(255) NOT NULL,
regdatum INTEGER NOT NULL -- Registrierungsdatum in UNIX Timestamp-Format
)

Wir erstellen hier die Tabelle mit dem Namen "mitglieder", die die Daten unserer Mitglieder aufnehmen wird. Sie enthält die Felder "id" (zur eindeutigen Identifizierung eines jeden Mitgliedes), "name", "passwort" (selbsterklärend), "funktion" (hier wird gespeichert, ob es sich bei dem User um ein Mitglied oder einen Admin handelt!), "email" und "regdatum" (der Zeitpunkt der Registrierung).

Wirklich notwendig wären nur id, name und passwort, für die spätere praktische Anwendung sind die anderen Felder aber auch sehr nützlich, weshalb ich sie eingefügt habe. Wenn ihr keine Verwendung dafür habt, stören sie niemanden, und wenn doch, werdet ihr froh sein dass ihr nicht später zurückkommen und umständliche Änderungen durchführen müsst. fröhlich

2. Verbindung zur Datenbank
Bei den angehängten Daten findet sich auch die datenbank.php, die in das Skript included wird. Sie übernimmt das Herstellen der Verbindung zur Datenbank, und wenn ihr die Registration gemeinsam mit meinem Login verwendet, müsst ihr die Datei nur einmal anpassen und könnt sie dann für beide Skripts verwenden.

In beiden Fällen sind die Daten aus eurem phpMyAdmin einzutragen:
php:
1:
2:
3:
4:
$sqlhost "localhost";  //bei funpic, bplaced etc. ansonsten musst du den Host bei deinem Anbieter nachschauen!
$sqluser "DEINBENUTZERNAME";
$sqlpassword "DEINPASSWORT";
$sqldb "DEINEDATENBANK";

3. Das eigentliche Skript
Jetzt wenden wir uns dem eigentlichen Skript zu. Das meiste wird ganz von selbst erledigt und ihr solltet nur an dem PHP-Teil herumbessern, wenn ihr eine ungefähre Ahnung habt, was ihr tut, sonst könnte die ganze Funktionalität verloren gehen. Wenn ihr einen Blick in die Datei register.php werft, findet ihr dort ein paar Infos und außerdem habe ich den Code reichlich mit Kommentaren versehen, so dass es fortgeschrittenen Benutzern kinderleicht fallen sollte, das Skript nach ihren Wünschen und Anforderungen anzupassen.
Auf jeden Fall aber müsst ihr ein paar Variablen anpassen. Damit könnt ihr die Fehlermeldungen personalisieren und außerdem eure Links eintragen. Die Variablen, von denen ich spreche, findet ihr übersichtlich im oberen Teil der Datei zusammengefasst (Zeile 31 bis 38 in register.php).
php:
1:
2:
3:
4:
5:
6:
7:
8:
$fehler "<h1>Fehler!</h1>";
$fehler1 "Bitte fülle alle Felder vollständig aus!<br><b><a href="javascript:history.back()">Zurück </a></b>";
$fehler2 "Die Passwörter stimmen nicht überein!<br><b><a href="javascript:history.back()">Zurück </a></b>";
$fehler3 "Der Username existiert bereits!<br><b><a href="javascript:history.back()">Zurück </a></b>";
$fehler4 "Problem beim Eintragen in die Datenbank! Bitte versuche es später oder setze dich mit dem Webmaster in Verbindung!<br><b><a href="javascript:history.back()">Zurück </a></b>";
$erfolg "<h1>Registrierung erfolgreich!</h1>";
$internlink "<a href = 'DEINE INTERNE SEITE'>internen Bereich</a>";
$loginmeldung ", du wurdest bereits eingeloggt und kannst nun den ".$internlink." betreten!<br>Viel Spaß!";

Alles, was in den Anführungszeichen steht, kann nach euren Wünschen verändert werden.

Das eigentliche Formular (ihr findet es im unteren Teil der Datei) kann ebenfalls verändert und beliebig gestylt werden, die Eingabefelder müssen aber erhalten bleiben.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<h1>Registrierung</h1>
<form name = "anmeldung" action = "" method = "post">
Username: <input type = "text" name = "name"><br>
Passwort: <input type = "password" name = "passwort"><br>
Passwort (Wiederholung): <input type = "password" name = "passwort2"><br>
E-Mail: <input type = "text" name = "email"><br>
<input type = "hidden" name = "sent" value = "sent">
<input type = "submit" value = "Registrieren">
</form>

An einigen Stellen der Datei habe ich außerdem mit Kommentaren angegeben, wenn zustätzliches HTML oder Codes eingefügt werden können, zB. Links zu CSS-Stylesheets. Abgesehen davon sollte die Struktur nicht verändert werden, um Komplikationen zu vermeiden.

Damit wären wir auch schon fertig! Ladet nun die Dateien datenbank.php und register.php ins selbe Verzeichnis hoch, vergesst nicht, die Tabelle anzulegen und eure Registrierung sollte einsatzbereit sein.
Ihr solltet euch nun zuerst einmal selbst registrieren. Um euren eigenen Status auf "Administrator" zu ändern, könnt ihr euch bei phpMyAdmin einloggen, links auf die Tabelle "mitglieder" klicken (wenn euch dann nicht die Datensätze sondern die Struktur angezeigt wird, klickt oben auf die Registerkarte "Anzeigen"), dann bei dem Datensatz mit eurem Namen das Stiftsymbol (Bearbeiten) anklicken und bei dem in weiterer Folge erscheinenden Formular den Wert des Feldes funktion von Mitglied auf Administrator (oder wie auch immer ihr das bezeichnen wollt) ändern. Ein Klick auf 'OK' und es ist vollbracht. fröhlich
Viel Spaß mit dem Skript!

Zusatz: Der Login
Ohne einen dazugehörigen Login nützt einem eine Anmeldung natürlich noch nicht viel. Zu diesem Zweck habe ich mein Login-Skript zur Verfügung gestellt. Dieses könnt ihr nun durcharbeiten (wenn ihr das nicht bereits getan habt). Ihr könnt dabei aber den Teil mit der Datenbank als auch den mit der datenbank.php überspringen, da wir das in diesem Tutorial ja bereits erledigt haben.

Allerdings sind einige wenige kleine Änderungen an der login.php notwendig. Wenn ihr also das andere Tutorial abgeschlossen habt, kehrt noch einmal in die login.php zurück und führt folgendes aus:

Suche:
php:
1:
$query mysql_query("SELECT name, passw FROM mitglieder WHERE name = '".$username."' AND passw = '".$passwort."' LIMIT 1");

Ersetze mit:
php:
1:
$query mysql_query("SELECT * FROM mitglieder WHERE name = '".$username."' AND passwort = '".$passwort."' LIMIT 1");


Suche:
php:
1:
$_SESSION["name"] = $username;   //Session speichern

Füge darunter ein:
php:
1:
$_SESSION["funktion"] = $login["funktion"];


Suche:
php:
1:
$passwort $_POST["password"];

Ersetze mit:
php:
1:
passwortmd5($_POST["passwort"]);


Das war Alles! Der Login sollte jetzt mit der Registrierung kompatibel sein.
Liebe Grüße und bis zum nächsten Mal,
brain <3



Geschrieben von doggiegirl am 09.08.2011 um 16:51:

 

#edit


Forensoftware: Burning Board, entwickelt von WoltLab GmbH