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.
|