Registrierung mit Aktivierungs-Mail Drucken E-Mail
Scripting-Tipps - PHP

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. Eine Aktivierungs-Mail wird bei der Registration eines Benutzers automatisch an die von ihm angegebene E-Mail-Adresse versandt. 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 frei geschaltet.
An dieser Stelle möchten wir Ihnen ein PHP-Script vorstellen, mit dem Sie mit Hilfe einer MySQL-Datenbank ein solches System selbst erstellen können.


Datenbank-Struktur erstellen

Zuerst einmal muss eine entsprechende Datenbank-Struktur erstellt werden. Dazu legt man folgende Struktur 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 der Besucher Ihrer Webseite sich 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="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
eMail: <input maxlength="255" name="EMail" type="text"><br>
<input name="Send" type="submit" value="Absenden">
</form>

<?php
}
?>



Aktivierungs-Seite anlegen

Jetzt müssen Sie nur noch die Seite erstellen, die beim Aufruf des Aktivierungs-Links den Benutzer in der Datenbank aktiviert. Dazu fügen Sie folgenden PHP-Code in diese Seite ein:

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 müssen die Einstellungen Ihrer Datenbank entsprechend abgeändert werden
  • Die Textausgaben der PHP-Schnipsel können Sie selbstverständlich nach eigenen Vorgaben gestalten
  • Der Seitenname der Aktivierungs-Seite muss nach strikter Befolgung unseres Beispiels "reg-aktivieren.php" heißen.


 


Weitere Artikel: