Registrierung mit Aktivierungsmail

Eine Registrierung mit Aktivierungsmail ist eine gute Möglichkeit, automatische Anmeldungen von Spam-Bots zu unterbinden. Daher nutzen viele Seitenbetreiber diese Methode. Der Nutzer, der sich registrieren möchte, erhält dabei automatisch eine Mail vom Server zugesendet. In dieser Mail findet sich meist ein Link, den er anklicken muss. Macht der Nutzer dies, wird sein Profil auf der Website freigeschaltet. Er kann nun die Website oder das Forum nutzen.

An dieser Stelle möchte ich dir ein PHP Script vorstellen, mit dem du unter Zuhilfenahme einer MySQL Datenbank ein solches System selbst erstellen kannst.

 

Datenbank-Struktur erstellen

Zuerst einmal musst du eine entsprechende Struktur in der Datenbank erstellen. Diese legt man wie folgt an:

 

Beispiel:

CREATE TABLE `Aktivierung` (
 `ID` int(11) NOT NULL auto_increment,
 `Aktivierungscode` varchar(10) NOT NULL default '',
 `Erstellt` datetime NOT NULL default '0000-00-00 00:00:00',
 `EMail` varchar(255) NOT NULL default '',
 `Aktiviert` enum('Ja','Nein') NOT NULL default 'Ja',
 PRIMARY KEY (`ID`)
 ) TYPE=MyISAM;

 

Registrierungs Seite anlegen

Danach wird folgendes PHP Script in die Seite aufgenommen, über die sich der Nutzer deiner Website registrieren soll.

 

Beispiel:

<?php
 
 $DatabaseHost = "localhost";
 $DatabaseUser = "user";
 $DatabasePassword = "password";
 $Database = "mydatabase";
 $TableAktivierung = "Aktivierung";
 
 $Absender = "name@ihre-domain.de";
 
 if($_REQUEST['Send'])
 {
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
     mysql_select_db($Database, $DatabasePointer);
 
     $_REQUEST['Email'] = mysql_real_escape_string($_REQUEST['Email']);
 
     $Erstellt = date("Y-m-d H:i:s");
     $Aktivierungscode = rand(1, 99999999);
 
     mysql_query("INSERT INTO $TableAktivierung (Aktivierungscode, Erstellt, EMail, Aktiviert) VALUES ('$Aktivierungscode', '$Erstellt', '".$_REQUEST['EMail']."', 'Nein')", $DatabasePointer);
 
     $ID = mysql_insert_id();
 
     mail($_REQUEST['EMail'], "Registrierung abschließen", "Hallo,\n\num die Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link:\n\nhttp://www.ihre-domain.de/reg-aktivieren.php?ID=$ID&Aktivierungscode=$Aktivierungscode", "FROM: $Absender");
     echo"Um die Registrierung abzuschließen, rufen Sie Ihr E-Mail-Postfach ab und klicken Sie auf den Aktivierungslink in der soeben an Sie versandten E-Mail.";
 }
 else
 {
 ?>
 
 <form action="" method="post">
 eMail: <input maxlength="255" name="EMail" type="text"><br>
 <input name="Send" type="submit" value="Absenden">
 </form>
 
 <?php
 }
 ?>

 

Aktivierungs Seite anlegen

Jetzt musst du nur noch die Seite erstellen, die beim Aufruf des Links zur Aktivierung den Benutzer in der Datenbank aktiviert. Füge dazu folgenden PHP Code in diese Seite ein:

 

Code-Beispiel:

<?php
 
 $DatabaseHost = "localhost";
 $DatabaseUser = "user";
 $DatabasePassword = "password";
 $Database = "mydatabase";
 $TableAktivierung = "Aktivierung";
 
 if($_REQUEST['ID'] && $_REQUEST['Aktivierungscode'])
 {
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
     mysql_select_db($Database, $DatabasePointer);
 
     $_REQUEST['ID']               = mysql_real_escape_string($_REQUEST['ID']);
     $_REQUEST['Aktivierungscode'] = mysql_real_escape_string($_REQUEST['Aktivierungscode']);
 
     $ResultPointer = mysql_query("SELECT ID FROM $TableAktivierung WHERE ID = '".$_REQUEST['ID']."' AND Aktivierungscode = '".$_REQUEST['Aktivierungscode']."'", $DatabasePointer);
 
     if(mysql_num_rows($ResultPointer) > 0)
     {
         @mysql_query("UPDATE $TableAktivierung SET Aktiviert = 'Ja' WHERE ID = '".$_REQUEST['ID']."'", $DatabasePointer);
         echo"Vielen Dank für Ihre Registrierung. Der Aktivierungsprozess ist nun abgeschlossen.";
     }
 }
 
 ?>

 

Hinweise

  • In beiden PHP Snippets musst du die Einstellung deiner Datenbank anpassen.
  • Die Textausgaben des Scripts kannst du ebenso nach deinen eigenen Vorgaben gestalten.
  • Der Name der Aktivierungs Seite muss nach strikter Befolgung des Beispiels reg-aktivieren.php lauten.

 


Dir gefällt dieser Artikel?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.