PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt1
Heute140
Gestern302
Gesamt2325868

PHP Loginsystem - User registrieren

Autor Flitze
Klicks 346163
Rating für PHP Loginsystem
  8.8 von 10
Bewertungen286
Stand 12.06.2013
Keywords:
Loginbereich, PHP Login, Userregistrierung, Anmeldung, Loginbereich, einloggen

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Workshops » PHP Loginsystem » PHP Loginsystem - User registrieren
Seite : 1 2 3 4 5 6 Bewerten
Article Wizard - deutscher Article Spinner

2. Registrierung neuer User

[ADSENSE_LINE]
Bevor man überhaupt beginnen kann, User auf der eigenen Website zu integrieren, muss man eine Grundlage zum Speichern der Daten schaffen. Dazu legen wir zunächst einmal folgende MySQL-Tabelle an:

Code:
  User
+---------------------+--------------+------+---------+---------+----------------+
| NAME                | TYP          | NULL | KEY     | DEFAULT | Extras         |
+---------------------+--------------+------+---------+---------+----------------+
| ID                  | INT          |      | PRIMARY |         | AUTO_INCREMENT |
| Autologin           | VARCHAR(32)  |  X   |         |         |                |
| IP                  | VARCHAR(15)  |      |         |         |                |
| SessionID           | VARCHAR(32)  |      |         |         |                |
| Nickname            | VARCHAR(30)  |      | UNIQUE  |         |                |
| Passwort            | VARCHAR(32)  |      |         |         |                |
| Email               | VARCHAR(70)  |      | UNIQUE  |         |                |
| Show_Email          | BOOL         |  X   |         |         |                |
| Homepage            | VARCHAR(70)  |      |         |         |                |
| Registrierungsdatum | DATE         |  X   |         |         |                |
| Wohnort             | VARCHAR(70)  |      |         |         |                |
| ICQ                 | VARCHAR(20)  |      |         |         |                |
| AIM                 | VARCHAR(70)  |      |         |         |                |
| YIM                 | VARCHAR(70)  |      |         |         |                |
| MSN                 | VARCHAR(70)  |      |         |         |                |
| Avatar              | VARCHAR(100) |      |         |         |                |
| Letzter_Login       | INT          |      |         |    0    |                |
| Letzte_Aktion       | INT          |      |         |    0    |                |
+---------------------+--------------+------+---------+---------+----------------+ 


Zum Erzeugen könnt ihr den folgenden Code verwenden:

PHP:
$sql = 'CREATE TABLE `User` ('
        . ' `ID` INT AUTO_INCREMENT NOT NULL, '
        . ' `Autologin` VARCHAR(32) NULL, '
        . ' `IP` VARCHAR(15) NOT NULL, '
        . ' `SessionID` VARCHAR(32) NOT NULL, '
        . ' `Nickname` VARCHAR(30) NOT NULL, '
        . ' `Passwort` VARCHAR(32) NOT NULL, '
        . ' `Email` VARCHAR(70) NOT NULL, '
        . ' `Show_Email` BOOL NULL, '
        . ' `Homepage` VARCHAR(70) NOT NULL, '
        . ' `Registrierungsdatum` DATE NULL, '
        . ' `Wohnort` VARCHAR(70) NOT NULL, '
        . ' `ICQ` VARCHAR(20) NOT NULL, '
        . ' `AIM` VARCHAR(70) NOT NULL, '
        . ' `YIM` VARCHAR(70) NOT NULL, '
        . ' `MSN` VARCHAR(70) NOT NULL, '
        . ' `Avatar` VARCHAR(100) NOT NULL, '
        . ' `Letzter_Login` INT NOT NULL DEFAULT \'0\', '
        . ' `Letzte_Aktion` INT NOT NULL DEFAULT \'0\','
        . ' PRIMARY KEY (`ID`),'
        . ' UNIQUE (`Nickname`, `Email`)'
        . ' )';
mysql_query($sql);


Bedeutung der einzelnen Spalten:

ID
Eine Zahl anhand derer man den User eindeutig identifizieren kann. Spätere Abfragen werden mit Hilfe dieser ID durchgeführt.

Autologin
Später wird ein User die Möglichkeit haben, 'eingeloggt' zu bleiben. D.h. er muss sich nicht bei jedem Besuch erneut anmelden, sondern bleibt so lange eingeloggt, bis er auf ausloggen klickt.

IP
Speichert die momentane IP des Users. Das kann nötig sein, falls man die Aktionen dieses User z.B. mit einem Logfile vergleichen will. Eine IP kann maximal 15 Zeichen lang sein, 12 Zahlen und 3 Punkte.

SessionID
Sessions werden später beim Login erforderlich sein. Üblicherweise hat eine Session ID genau 32 Stellen. Anhand der Session ID wird später der Login kontrolliert.

Nickname
Der Nutzername unter dem der User bekannt wird. Er sollte einzigartig sein, damit es nicht zu Verwirrungen kommt, deshalb bekommt er das Attribut UNIQUE.

Passwort
Das Passwort ist notwendig, damit der User später seinen Login und damit seine Identität bestätigen kann. Es wird nur codiert in der Datenbank gespeichert und diese Codierungsmethode benötigt genau 32 Stellen.

Email
Eine Email-Adresse sollte immer angegeben werden, falls der User einmal sein Passwort vergisst. Dadurch hat man die Möglichkeit, ein neues Passwort zu erstellen und es an die angegebene Adresse zu mailen.

Show_Email
Wir werden bei der Registrierung verlangen, dass der User seine Email-Adresse angibt, aber wir können ihn nicht zwingen, diese auch der Öffentlichkeit zu zeigen. Mit diesem Feld werden wir später kontrollieren, ob eine öffentliche Anzeige der Email-Adresse erwünscht ist.

Homepage
Die Webseite des Users, sofern vorhanden.

Registrierungsdatum
Speichert das Datum der Registrierung des Users. Dies kann nützlich sein, wenn man eine Statistik für den User erstellen will und eine Angabe zu Aktionen (Downloads, Forenbeiträge) pro Tag machen möchte.

Wohnort
Speichert den Wohnsitz des Users.

ICQ AIM YIM MSN
ICQ-Nummer, AOL Instant Messenger, Yahoo Instant Messenger, Microsoft Messenger

Avatar
Enthält die Adresse des Benutzerbildes.

Letzter_Login
Speichert den letzten Login des Nutzers als Timestamp.

Letzte_Aktion
Speichert jeden Klick des Users als den aktuellen Timestamp. Damit kann man kontrollieren, ob der User gerade aktiv ist und dadurch eine Aussage machen, ob der User online oder offline ist.

Diese Tabelle kann natürlich den eigenen Bedürfnissen angepasst werden, denn ICQ-Nummer oder Wohnort sind sicherlich nicht für jeden von Interesse. Sie dienen in diesem Workshop als Beispiel für optionale Daten.

Das Registrierungsformular


Damit sich ein User auf der Website registrieren kann, müssen wir eine entsprechende Schnittstelle zur Verfügung stellen. Das Erreichen wir durch den Einsatz eines Formulares. Bei der Beschreibung des Formulars werde ich nicht auf das Layout eingehen, da ihr das sowieso an eure Seite anpassen müsst. Als Beispiel könnt ihr dieses Formular betrachten:

Registrierungsformular
(Zur vergrößerten Darstellung bitte auf die Grafik klicken)

Kommen wir nun zur Grundstruktur dieses Skriptes.

PHP:
<?php    // Prüfen, ob das Formular gesendet wurde
    
if(Formular gesendet){
        
// Kontrolle der eingegebenen Daten
        // Eintragen in die Datenbank
    
}
    
// Ansonsten ...
    
else {
        
// ... Anzeige des Formulars
    
}
?>


Zunächst schreibe ich das Formular. Dabei achte ich darauf, dass ich bei den Eingabefeldern durch das maxlenght-Attribut die gleiche Länge vorgebe, die ich auch bei der Datenbank gesetzt habe. Außerdem muss für den Benutzer ersichtlich sein, welche Daten er eintragen muss und welche freiwillig sind.

PHP:
<?php
    
echo "<form ".
         
" name=\"Registrierung\" ".
         
" action=\"".$_SERVER['PHP_SELF']."\" "
         
" method=\"post\" ".
         
" accept-charset=\"ISO-8859-1\">\n";
    echo 
"<h5>Obligatorische Angaben</h5>\n";
    echo 
"<span style=\"font-weight:bold;\" ".
        
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
         
"Nickname :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
    echo 
"<br>\n";
    echo 
"<span style=\"font-weight:bold;\" ".
        
" title=\"min.6\">\n".
         
"Passwort :\n".
         
"</span>\n";
    echo 
"<input type=\"password\" name=\"Passwort\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"Passwort wiederholen:\n".
         
"</span>\n";
    echo 
"<input type=\"password\" name=\"Passwortwiederholung\">\n";
    echo 
"<br>\n";
    echo 
"<span style=\"font-weight:bold;\" ".
        
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
         
"Email-Adresse:\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"Email-Adresse anzeigen:\n".
         
"</span>\n";
    echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
    echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n";
    echo 
"<h5>Freiwillige Angaben</h5>\n";
    echo 
"<span>\n".
         
"Homepage :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"Homepage\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"Wohnort :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"ICQ :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"AIM :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"YIM :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<span>\n".
         
"MSN :\n".
         
"</span>\n";
    echo 
"<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
    echo 
"<br>\n";
    echo 
"<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
    echo 
"<input type=\"reset\" value=\"Zurücksetzen\">\n";
    echo 
"</form>\n";
?>


Bei den obligatorischen Feldern habe ich außerdem noch Hinweise durch das title-Attribut gegeben. Wenn ein User mit der Maus über das entsprechende <span>-Element fährt, wird der Hinweis als Tool-Tip sichtbar. Um sicherzustellen, dass sich der User beim Passwort nicht vertippt, da es ja nicht im Textfeld angezeigt wird, muss außerdem eine Passwortwiederholung eingegeben werden.

Nun müssen wir kontrollieren, ob ein User das Formular abgeschickt hat. Das realisieren wir, indem wir prüfen, ob der submit-Button 'Registrieren' gedrückt wurde. Danach prüfen wir die Eingaben des Users auf Vollständigkeit und Fehler.

PHP:
<?php
    error_reporting
(E_ALL);
    
$MYSQL_HOST 'localhost';
    
$MYSQL_USER 'root';
    
$MYSQL_PASS 'myPassWord';
    
$MYSQL_DATA 'myDataBase';

    
$connid = @mysql_connect($MYSQL_HOST$MYSQL_USER$MYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

    if(isset(
$_POST['submit']) AND $_POST['submit']=='Registrieren'){
        
// Fehlerarray anlegen
        
$errors = array();
        
// Prüfen, ob alle Formularfelder vorhanden sind
        
if(!isset($_POST['Nickname'],
                  
$_POST['Passwort'],
                  
$_POST['Passwortwiederholung'],
                  
$_POST['Email'],
                  
$_POST['Show_Email'],
                  
$_POST['Homepage'],
                  
$_POST['Wohnort'],
                  
$_POST['ICQ'],
                  
$_POST['AIM'],
                  
$_POST['YIM'],
                  
$_POST['MSN']))
            
// Ein Element im Fehlerarray hinzufügen
            
$errors[] = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
        else{
            
// Prüfung der einzelnen obligatorischen Felder
            // Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
            
$nicknames = array();
            
$emails = array();
            
$sql "SELECT
                             Nickname,
                             Email
                     FROM
                             User
                    "
;
            
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            while(
$row mysql_fetch_assoc($result)){
                     
$nicknames[] = $row['Nickname'];
                     
$emails[] = $row['Email'];
            }
            
// Prüft, ob ein Nickname eingegeben wurde
            
if(trim($_POST['Nickname'])=='')
                
$errors[]= "Bitte geben Sie einen Nickname ein.";
            
// Prüft, ob der Nickname mindestens 3 Zeichen enthält
            
elseif(strlen(trim($_POST['Nickname'])) < 3)
                
$errors[]= "Ihr Name muss mindestens 3 Zeichen lang sein.";
            
// Prüft, ob der Nickname nur gültige Zeichen enthält
            
elseif(!preg_match('/^\w+$/'trim($_POST['Nickname'])))
                
$errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
            
// Prüft, ob der Nickname bereits vergeben ist
            
elseif(in_array(trim($_POST['Nickname']), $nicknames))
                
$errors[]= "Dieser Nickname ist bereits vergeben.";
            
// Prüft, ob eine Email-Adresse eingegeben wurde
            
if(trim($_POST['Email'])=='')
                
$errors[]= "Bitte geben Sie Ihre Email-Adresse ein.";
            
// Prüft, ob die Email-Adresse gültig ist
            
elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§'trim($_POST['Email'])))
                
$errors[]= "Ihre Email Adresse hat eine falsche Syntax.";
            
// Prüft, ob die Email-Adresse bereits vergeben ist
            
elseif(in_array(trim($_POST['Email']), $emails))
                
$errors[]= "Diese Email-Adresse ist bereits vergeben.";
            
// Prüft, ob ein Passwort eingegeben wurde
            
if(trim($_POST['Passwort'])=='')
                
$errors[]= "Bitte geben Sie Ihr Passwort ein.";
            
// Prüft, ob das Passwort mindestens 6 Zeichen enthält
            
elseif (strlen(trim($_POST['Passwort'])) < 6)
                
$errors[]= "Ihr Passwort muss mindestens 6 Zeichen lang sein.";
            
// Prüft, ob eine Passwortwiederholung eingegeben wurde
            
if(trim($_POST['Passwortwiederholung'])=='')
                
$errors[]= "Bitte wiederholen Sie Ihr Passwort.";
            
// Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
            
elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
                
$errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
        }
        
// Prüft, ob Fehler aufgetreten sind
        
if(count($errors)){
             echo 
"Ihr Account konnte nicht erstellt werden.<br>\n".
                  
"<br>\n";
             foreach(
$errors as $error)
                 echo 
$error."<br>\n";
             echo 
"<br>\n".
                  
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
        }
        else{
            
// Daten in die Datenbanktabelle einfügen
        
}
    }
    else {
        echo 
"<form ".
             
" name=\"Registrierung\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"<h5>Obligatorische Angaben</h5>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
             
"Nickname :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.6\">\n".
             
"Passwort :\n".
             
"</span>\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.6\">\n".
             
"Passwort wiederholen:\n".
             
"</span>\n";
        echo 
"<input type=\"password\" name=\"Passwortwiederholung\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
             
"Email-Adresse:\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span>\n".
             
"Email-Adresse anzeigen:\n".
             
"</span>\n";
        echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
        echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n";
        echo 
"<h5>Freiwillige Angaben</h5>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"Homepage :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Homepage\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"Wohnort :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"ICQ :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"AIM :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"YIM :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"MSN :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
        echo 
"<input type=\"reset\" value=\"Zurücksetzen\">\n";
        echo 
"</form>\n";
    }
?>


Zunächst wird eine Datenbankverbindung hergestellt. Diese wird benötigt, weil wir nur einzigartige Nicknames und Emailadressen zulassen wollen und uns die bereits vorhanden zum Vergleich aus der Datenbank holen müssen. Für den Nickname müssen mindestens 3 Zeichen eingegeben werden. Es sind nur alphanumerische Zeichen, also Zahlen und Buchstaben sowie der Unterstrich _ zugelassen. Das überprüfe ich mittels eines RegEx. Ebenfalls mit Hilfe eines Regex wird die Email-Adresse geprüft. Eine Erklärung dazu könnt ihr dem Tipp Email-Adresse prüfen entnehmen. Zur Erhöhung der Sicherheit des User-Passwortes muss eine mindestens 6-Stellige Zeichenfolge eingegeben werden. Dabei sind alle Zeichen zulässig. Außerdem wird bei allen obligatorischen Feldern geprüft, ob überhaupt etwas eingegeben wurde. Jede negative Prüfung führt zum Hinzufügen eines Elementes im Fehlerarray. Wurde mindestens ein Fehler gefunden, werden die Daten nicht in der Datenbank gespeichert und stattdessen werden entsprechende Fehlermeldungen ausgegeben.

Bei einer fehlerfreien Eingabe werden die Daten in der Datenbank gespeichert.

PHP:
<?php
    error_reporting
(E_ALL);
    
$MYSQL_HOST 'localhost';
    
$MYSQL_USER 'root';
    
$MYSQL_PASS 'myPassWord';
    
$MYSQL_DATA 'myDataBase';

    
$connid = @mysql_connect($MYSQL_HOST$MYSQL_USER$MYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

    
session_start();

    if(isset(
$_POST['submit']) AND $_POST['submit']=='Registrieren'){
        
// Fehlerarray anlegen
        
$errors = array();
        
// Prüfen, ob alle Formularfelder vorhanden sind
        
if(!isset($_POST['Nickname'],
                  
$_POST['Passwort'],
                  
$_POST['Passwortwiederholung'],
                  
$_POST['Email'],
                  
$_POST['Show_Email'],
                  
$_POST['Homepage'],
                  
$_POST['Wohnort'],
                  
$_POST['ICQ'],
                  
$_POST['AIM'],
                  
$_POST['YIM'],
                  
$_POST['MSN']))
            
// Ein Element im Fehlerarray hinzufügen
            
$errors "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
        else{
            
// Prüfung der einzelnen obligatorischen Felder
            // Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
            
$nicknames = array();
            
$emails = array();
            
$sql "SELECT
                             Nickname,
                             Email
                     FROM
                             User
                    "
;
            
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            while(
$row mysql_fetch_assoc($result)){
                     
$nicknames[] = $row['Nickname'];
                     
$emails[] = $row['Email'];
            }
            
// Prüft, ob ein Nickname eingegeben wurde
            
if(trim($_POST['Nickname'])=='')
                
$errors[]= "Bitte geben Sie einen Nickname ein.";
            
// Prüft, ob der Nickname mindestens 3 Zeichen enthält
            
elseif(strlen(trim($_POST['Nickname'])) < 3)
                
$errors[]= "Ihr Name muss mindestens 3 Zeichen lang sein.";
            
// Prüft, ob der Nickname nur gültige Zeichen enthält
            
elseif(!preg_match('/^\w+$/'trim($_POST['Nickname'])))
                
$errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
            
// Prüft, ob der Nickname bereits vergeben ist
            
elseif(in_array(trim($_POST['Nickname']), $nicknames))
                
$errors[]= "Dieser Nickname ist bereits vergeben.";
            
// Prüft, ob eine Email-Adresse eingegeben wurde
            
if(trim($_POST['Email'])=='')
                
$errors[]= "Bitte geben Sie Ihre Email-Adresse ein.";
            
// Prüft, ob die Email-Adresse gültig ist
            
elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§'trim($_POST['Email'])))
                
$errors[]= "Ihre Email Adresse hat eine falsche Syntax.";
            
// Prüft, ob die Email-Adresse bereits vergeben ist
            
elseif(in_array(trim($_POST['Email']), $emails))
                
$errors[]= "Diese Email-Adresse ist bereits vergeben.";
            
// Prüft, ob ein Passwort eingegeben wurde
            
if(trim($_POST['Passwort'])=='')
                
$errors[]= "Bitte geben Sie Ihr Passwort ein.";
            
// Prüft, ob das Passwort mindestens 6 Zeichen enthält
            
elseif (strlen(trim($_POST['Passwort'])) < 6)
                
$errors[]= "Ihr Passwort muss mindestens 6 Zeichen lang sein.";
            
// Prüft, ob eine Passwortwiederholung eingegeben wurde
            
if(trim($_POST['Passwortwiederholung'])=='')
                
$errors[]= "Bitte wiederholen Sie Ihr Passwort.";
            
// Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
            
elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
                
$errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
        }
        
// Prüft, ob Fehler aufgetreten sind
        
if(count($errors)){
             echo 
"Ihr Account konnte nicht erstellt werden.<br>\n".
                  
"<br>\n";
             foreach(
$errors as $error)
                 echo 
$error."<br>\n";
             echo 
"<br>\n".
                  
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
        }
        else{
            
// Daten in die Datenbanktabelle einfügen
            
$sql "INSERT INTO
                           User
                            (Nickname,
                             Email,
                             Passwort,
                             Show_Email,
                             Registrierungsdatum,
                             Wohnort,
                             Homepage,
                             ICQ,
                             AIM,
                             YIM,
                             MSN
                            )
                    VALUES
                            ('"
.mysql_real_escape_string(trim($_POST['Nickname']))."',
                             '"
.mysql_real_escape_string(trim($_POST['Email']))."',
                             '"
.md5(trim($_POST['Passwort']))."',
                             '"
.mysql_real_escape_string(trim($_POST['Show_Email']))."',
                             CURDATE(),
                             '"
.mysql_real_escape_string(trim($_POST['Wohnort']))."',
                             '"
.mysql_real_escape_string(trim($_POST['Homepage']))."',
                             '"
.mysql_real_escape_string(trim($_POST['ICQ']))."',
                             '"
.mysql_real_escape_string(trim($_POST['AIM']))."',
                             '"
.mysql_real_escape_string(trim($_POST['YIM']))."',
                             '"
.mysql_real_escape_string(trim($_POST['MSN']))."'
                            )
                   "
;
            
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            echo 
"Vielen Dank!\n<br>".
                 
"Ihr Accout wurde erfolgreich erstellt.\n<br>".
                 
"Sie können sich nun mit Ihren Daten einloggen.\n<br>".
                 
"<a href=\"login.php\">Zum Login</a>\n";
        }
    }
    else {
        echo 
"<form ".
             
" name=\"Registrierung\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"<h5>Obligatorische Angaben</h5>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
             
"Nickname :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.6\">\n".
             
"Passwort :\n".
             
"</span>\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"min.6\">\n".
             
"Passwort wiederholen:\n".
             
"</span>\n";
        echo 
"<input type=\"password\" name=\"Passwortwiederholung\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\" ".
             
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
             
"Email-Adresse:\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span>\n".
             
"Email-Adresse anzeigen:\n".
             
"</span>\n";
        echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"1\"> ja\n";
        echo 
"<input type=\"radio\" name=\"Show_Email\" value=\"0\" checked> nein\n";
        echo 
"<h5>Freiwillige Angaben</h5>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"Homepage :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Homepage\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"Wohnort :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"ICQ :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"AIM :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"YIM :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<span style=\"font-weight:bold;\">\n".
             
"MSN :\n".
             
"</span>\n";
        echo 
"<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
        echo 
"<input type=\"reset\" value=\"Zurücksetzen\">\n";
        echo 
"</form>\n";
    }
?>


Beim Einfügen der Daten muss man wie bei jedem MySQL-Query darauf Acht geben, dass SQL-Injektion unmöglich ist. Das erreicht man durch den Einsatz von mysql_real_escape_string(). Um keine unnötigen Whitespaces in der Datenbank zu haben, wendet man außerdem die Funktion trim() auf alle Daten an.
Das Passwort wird, wie bereits angedeutet, codiert gespeichert. Dazu benutzt man in der Regel die Funktion md5(), die aus einem beliebigen String eine 32-stellige Zeichenkette erstellt. Das Registrierungsdatum wird durch die MySQL-Funktion CURDATE() automatisch ermittelt. CURDATE() liefert immer das aktuelle Datum.

Damit ist die Registrierung des Users abgeschlossen und die Daten wurde in der Datenbank gespeichert. Die ID des Users wurde übrigens automatisch erstellt, da diese Spalte das Extra Auto_Increment besitzt.

Zurück zur vorigen Seite:
PHP Loginsystem
Weiter zur nächsten Seite:
PHP Loginsystem - Passwort-vergessen-Funktion

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024