PHP » Aktivierungsemail verschicken und auswerten

Bei vielen Registrierungen bekommt man automatisch eine Email zugesendet, in der man einen Link anklicken muss, um die Registrierung zu bestätigen. Da ich ein ähnliches Script in meinem Informatik Grundkurs programmieren sollte, habe ich mich mit diesem Thema einmal beschäftigt.
Heraus kam ein simples Script, das die Grundvorraussetzungen erfüllt und leicht um neue Funktionen erweitert werden kann.
Der Versand der Email kann direkt nach der Registrierung erfolgen. Für das Tutorial wird vorrausgesetzt, dass die Benutzerdaten in einer MySQL Datenbank abgespeichert werden, und bei einer neuen Registrierung erstmal den Status "inaktiv" o.ä. bekommen.
Damit nach dem Klicken des Links auch der Benutzer "identifieziert" werden kann, sollten wir uns eine individuelle Stelle aus der Datenbank dazu nehmen. Das kann beispielsweise die ID, der Benutzername oder die Email-Adresse sein. Ich werde in diesem Beispiel den Benutzernamen verwenden.
Fangen wir also mit unserem ersten Script an, das zum Versand der Email benötigt wird.
<html>

<head>
   <title>Aktivierungsemail verschicken</title>
</head>

<body>
<?php

$Nick = $_POST['AnmeldeName'] # Name des Benutzers (von Registrierung)
$Absender = 'Deine Email/Homepagetitel/...'; # Das, was als Absender bei dem Empfänger erscheinen soll>
$Empfaenger = $_POST['Email']; # Email-Adresse des Empfängers (von Registrierung)
$Betreff = 'Registrierungsbestätigung'; # Betreff der Email

############ EMAIL BODY ############<br />
$header = "From: ".$Absender."\n";

$email_body = "Bitte klicke auf folgenden Link, um deine Registrierung zu bestätigen. \n\n";
$email_body .= "http://www.deineseite.de/auswertung.php?name=".$Nick;
############ BODY ENDE ############

mail($Empfaenger, $Betreff, $email_body, $header); # Versenden der Aktivierungsemail
echo "Du hast dich erfolgreich registriert. Es wurde eine Aktivierungsemail verschickt, um deine Registrierung zu bestätigen.";

?>
</body>

</html>

Zunächst müssen alle Variablen zugewiesen werden. Der Nick und der Empfänger werden aus der Registrierung des Benutzers abgerufen, z.B. aus einem Anmeldeformular. Falls die entsprechenden Formularfelder andere Namen besitzen, müssen diese angepasst werden.
Anschließend muss noch der Absender angegeben werden. Das kann entweder ein Titel (z.B. von deiner Seite) oder auch deine Emailadresse sein. Danach wird noch ein Betreff festgelegt. Es sollte für den Empfänger jedoch erkennbar sein, dass es sich um eine Registrierungsbestätigung handelt.
Dann wird die Email erstellt. In den Header ($header) wird der Absender, der ja vorhin definiert wurde, eingetragen.
Danach kommt der Textteil der Email ($email_body), in der ein beliebiger Text geschrieben werden kann. Darunter erscheint dann ein Link, in dem die Adresse der Datei, die zur Auswertung des Links verwendet wird, angegeben werden muss. Mit diesem Link wird der Name des aktuellen Benutzers übergeben. Dazu aber gleich noch mehr.
Am Schluss wird dann mithilfe mail() die Aktivierungsemail verschickt.
Jetzt ist die Email verschickt und mit einem Link versehen, in dem der Benutzername übermittelt wurde. Diesen übergebenen Namen können wir benutzen, um den Status des Benutzerkontos bei Klicken des Links zu aktualisieren.
Alles was dazu benötigt wird ist ein MySQL Update.
<html>

<head>
   <title>Registrierung abschließen</title>
</head>

<body>
<?php

if(isset($_GET['name']))
{
   mysql_connect('localhost', 'Benutzername', 'Passwort');
   mysql_select_db('Datenbank');
   mysql_query("UPDATE Benutzerdatenbank SET Status=1 WHERE Name='".$_GET['name']."'");
   echo "Vielen Dank. Dein Konto wurde aktiviert und kann jetzt benutzt werden!";
}

?>
</body>

</html>

Diese Datei müsste in unserem Beispiel jetzt als "auswertung.php" gespeichert werden (je nachdem, welche Datei bei dem Link angegeben wird).
Nachdem überprüft wurde, ob ein Name per URL übergeben wurde, wird die Verbindung zur MySQL Datenbank hergestellt. Hier musst du die Zugangsdaten zu deiner MySQL Datenbank angeben.
Danach kommt das MySQL Update. Anstatt "Benutzerdatenbank" wird die Tabelle angeben, in der deine Benutzer gespeichert werden.
Dann folgt der Befehl, die Spalte Status des jeweiligen Benutzers (die bei der Registrierung z.B. auf "inaktiv" steht), in "aktiv" zu aktualisieren.<br />
Mit der WHERE-Angabe wird nur dort der Status verändert, an dem der Benutzername aus der Datenbank gleich dem Namen, der über den Link übermittelt wurde, ist. Wenn anstatt des Benutzernamens eine ID übermittelt wurde, muss dies entsprechend geändert werden.
Anschließend erscheint dann noch eine Meldung, dass das Konto aktiviert wurde.
Bei einem Login-Script könnte man nun prüfen, ob der Benutzer, der sich gerade einloggen möchte, schon aktiviert wurde. Wenn nicht, ist ein Login noch nicht möglich.

Ich hoffe ich konnte die Problematik einer Aktivierungsemail mit diesem Tutorial ein wenig näher bringen. Erweiterungen sollten sich in dieses Script ohne Probleme einfügen lassen.

Downloads:


Links zu ähnlichen Themen:



· zurück zur Übersicht