Registrierung mit Aktivierungs-Mail

Um im einem Forum, einen Blog oder auf einer Webseite automatische Anmeldungen von so genannten „Spam-Bots“ zu unterbinden, benutzen viele Seitenbetreiber die altbekannten Aktivierungs-Mails. Diese Mails erhält der Nutzer, der sich registrieren möchte, automatisch an die von ihm angegebene E-Mail Adresse zugesendet. Der Benutzer, der sich auf der Seite anmelden möchte, muss nun nur noch seine E-Mails abrufen und in dieser Mail den Registrierungs-Link anklicken. Schon wird er freigeschaltet.

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 Datenbank-Struktur erstellen. Diese legt man wie folgt an:

 

Code-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 der Besucher deiner Webseite sich registrieren soll.

 

Code-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 Aktivierungs-Links 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-Schnipseln musst du die Einstellungen deiner Datenbank entsprechend abändern
  • Die Textausgaben des Scripts kannst du selbstverständlich nach eigenen Vorgaben gestalten
  • Der Seitenname der Aktivierungs-Seite muss nach strikter Befolgung des Beispiels reg-aktivieren.php heißen.

 


Dir gefällt dieser Artikel?

Schreibe einen Kommentar

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