Double-Opt-in via PHP mit Mailgun
Ein eigenes Anmeldeformular mit Mailgun zu erstellen, ist ganz einfach. Ich erhalte unzählige Nachrichten von Leuten, die mich bitten, ein Tutorial darüber zu schreiben, wie man das in PHP macht. Hier ist es also. Bevor wir über den Code sprechen, werfen wir einen kurzen Blick auf die Best Practices. Wenn Sie bereits alles über Double-Opt-in wissen, überspringen Sie den nächsten Absatz. Gehen Sie über unser Inhaltsverzeichnis unten direkt zum technischen Teil über.
Was ist Double-Opt-in und warum ist es für die Entwicklung wichtig?
Ein Double-Opt-in-Verfahren stellt sicher, dass eine Person, die ihre Daten in das Newsletter-Anmeldeformular auf Ihrer Website eingibt, sich auch wirklich dafür angemeldet hat. Dazu werden Sie gebeten, zu bestätigen, dass Ihre E-Mail-Adresse zu einer bestimmten Mailingliste hinzugefügt wurde. Wie funktioniert das? Ganz einfach: Sie erhalten eine E-Mail, in der Sie gebeten werden, zu bestätigen, dass Sie wirklich E-Mails von diesem Absender erhalten möchten. Wenn Sie Ihr Abonnement nicht bestätigen (meist durch Klick auf einen Bestätigungslink in einer Bestätigungs-E-Mail), sollten Sie niemals eine Marketing-E-Mail (oder Ähnliches) von diesem Absender erhalten.
Marketingfachleute mögen dieses Verfahren oft nicht, da es einen zusätzlichen Schritt bedeutet, um ihre Zielgruppe zu erreichen. Es ist jedoch wichtig zu verstehen, dass ohne diesen Prozess alle Menschen Ziel von unerwünschtem E-Mail-Spam werden könnten
Ohne Double-Opt-in könnte jede Person, die Ihre E-Mail-Adresse kennt, Sie ohne Ihre Einwilligung für Tausende von Newslettern und Marketinglisten in Ihrem Namen anmelden.
In den meisten Ländern ist dies gesetzlich vorgeschrieben. So oder so bin ich der Meinung, dass es eine Best Practice ist und Ihr Unternehmen vor Problemen mit der Zustellbarkeit und Beschwerden über E-Mail-Missbrauch schützt.
HTML- und Javascript-Formular
Als Erstes erstellen Sie ein Formular, das Sie irgendwo auf Ihrer Website platzieren. In diesem Formular werden Personen nach ihren Daten gefragt, die Sie in einer Datenbank oder – falls unterstützt – direkt in der E-Mail-Plattform speichern können. Mailgun unterstützt Letzteres (und mit benutzerdefinierten variablen Parametern sogar noch mehr), sodass Sie sich nicht um die Einrichtung einer Datenbank zur Speicherung dieser Daten kümmern müssen.
Das Formular sendet die Daten an eine Datei namens contact.php und enthält zwei Pflichtfelder. Natürlich können Sie das Namensfeld optional machen oder weitere Felder hinzufügen. Für diesen Artikel halten wir es jedoch einfach.
<p>
<a href="#">I've read and agree to the Terms of Service </a>
</p>
<button type="submit">Newsletter Signup</button>
<p>
<span style="display: none" id="pls"> Please review and tick the Terms of Service box</span>
</p>
Der folgende Javascript-Code stellt sicher, dass das Kontrollkästchen vor der Validierung (beim Absenden) aktiviert wurde. Andernfalls wird die E-Mail nicht weitergeleitet.
var box = document.getElementById("chx");
var alrt = document.getElementById("pls");
function check_the_box(){
if(!box.checked) {
alrt.setAttribute("style","display: inline");
return false
}
else {
return true
}
}
Sie können das Formular gerne optisch anpassen. Momentan ist es sehr einfach gehalten, aber funktional.
PHP-Funktionen
Hier beginnt der interessante Teil – eine Datei, die alle für das Formular erforderlichen Funktionen enthält.
Hier ist eine kurze Auflistung aller erstellten Funktionen und eine Erklärung ihrer Aufgaben:
- SanitizeInputs(): Diese Funktion bereinigt die Eingaben von „schädlichen“ Zeichen
- SanitizeEmail(): Wie oben, führt aber stattdessen eine Regex-Prüfung der E-Mail-Adresse durch. Wir möchten ja keine E-Mails an falsch geschriebene Adressen senden, oder?
- SendConfirmationEmail(): Sendet eine E-Mail an eine angegebene E-Mail-Adresse. In unserem Fall ist dies die vom Nutzer angegebene Adresse
- MakeConfirmationHash(): Erstellt einen eindeutigen Hash basierend auf der Verkettung der E-Mail-Adresse des Nutzers und einer geheimen Zeichenfolge. Diese Zeichenfolge wird als Teil der URL gesendet, die der Nutzer anklicken muss, um zu bestätigen, dass er E-Mails von unserer Website erhalten möchte. Sicheres und herausragendes Double-Opt-in.
- CheckConfirmationHash(): Eine Funktion, die überprüft, ob der in der URL enthaltene Hash gültig ist, wenn der Nutzer auf den Bestätigungslink klickt. Dies ist für das Double-Opt-in-Verfahren sehr wichtig, da sonst alle Personen die E-Mail-Adressen der anderen verifizieren könnten.
Ändern Sie den Text der E-Mail nach Belieben. Denken Sie daran, dass Sie den geheimen Hash, die E-Mail-Adresse und den Namen des Nutzers als GET-Parameter an das Skript zurückgeben.
Abhängigkeitswarnung: Ich habe die offizielle Mailgun-PHP-Bibliothek verwendet, die auf GitHub verfügbar ist
sendMessage($domain, array(
'from' => 'confirmation@'.$domain,
'to' => $recipientAddress,
'subject' => $subjectText,
'html' => '<p>Hello, please confirm you want to receive marketing emails from '.$domain.' by clicking on the below link <p><a href="$siteURL/contact.php?c='.$hashedUnique.'&e='.$recipientAddress.'&n='.$recipientName.'">CONFIRMATION</a></p></p><p> This email was sent to'.$recipientName.', at the speed of a bullet, by Mailgun!</a>'
));
}
function MakeConfirmationHash($confEmail, $confCode) {
return md5($confEmail.$confCode);
}
function CheckConfirmationHash($confEmail, $confCode) {
global $uniqueKey;
if (md5($confEmail.$uniqueKey) === $confCode) { return TRUE; }
else { return FALSE; }
}
function AddMemberToList($recipientAddress,$recipientName) {
global $mailingList,$mgClient;
$result = $mgClient->post("lists/$mailingList/members", array(
'address' => $recipientAddress,
'name' => $recipientName,
'description' => 'Form Opt In',
'subscribed' => true
));
}
PHP-Logik
Für den Logikteil erkläre ich die Überlegungen hinter dem Code.
Wenn der Nutzer seine E-Mail-Adresse und seinen Namen in das Feld eingibt und das Formular absendet, passiert Folgendes:
- Das Skript generiert einen eindeutigen Code und sendet ihn per E-Mail an den Nutzer
- Der Nutzer erhält eine E-Mail mit einem Bestätigungslink, der Informationen über ihn und den eindeutigen Code enthält: Das Klicken auf die E-Mail bestätigt das Einverständnis, dass die Adresse in unsere Mailingliste aufgenommen wird.
- Durch Klicken auf die URL werden die Daten des Nutzers zurückgesendet. Diese werden mit dem eindeutigen Code abgeglichen und lösen die Aufnahme in die Mailingliste bei Mailgun aus.
Und das war’s auch schon. Das Double-Opt-in wurde eingehalten und die Aufgabe erfolgreich erledigt.
Lassen Sie mich wissen, ob Ihnen dieser Artikel gefallen hat, indem Sie Ihre Gedanken im Kommentarfeld unten oder auf Twitter teilen. Wenn Sie dieses Tutorial in einer anderen Programmiersprache sehen möchten, sagen Sie mir ebenfalls gern Bescheid.
Viel Spaß beim Versenden.