SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung
mit Google reCAPTCHAv2 schützen

Immer öfter werden Scripte durch Bots aufgerufen um zu testen ob diese z.B. für den Spam-Versand geeignet sind. Zur Vermeidung solcher Aufrufe kann ein Captcha oder Google reCAPTCHA verwendet werden.

Alternativ kann ein Captcha mit einem angezeigten Wort auf einem Bild verwendet werden, dieses Captcha setzt jedoch voraus, dass das An-/Abmeldeformular sich innerhalb einer PHP-Datei befindet. Mehr Informationen zum Captcha

Einbauanleitung

Das Formular für die Anmeldung/Abmeldung vom/zum Newsletter kann sich innerhalb einer HTML-Datei oder PHP-Datei befinden. Auf dem Server muss PHP 5.0 oder neuer mit aktivierten OpenSSL installiert sein. Für die Anmeldung oder Abmeldung zum Newsletter muss im Browser des Besuchers JavaScript aktiviert sein, ansonsten wird die Anmeldung immer fehlschlagen. Normale Bots, die kein JavaScript ausführen können, sind damit automatisch von der Anmeldung zum Newsletter ausgeschlossen.

 

Bei Google reCAPTCHA anmelden

Sie müssen sich bei Google reCAPTCHA anmelden, um einen geheimen (privaten) und einen Website Schlüssel (öffentlichen Schlüssel) für Ihr eigenes Captcha zu erhalten. Die Anmeldung ist unter https://www.google.com/recaptcha/ möglich.

Das Google reCAPTCHA gibt es als Version 2 und Version 3, hier wird die Version 2 (Kästchen) erläutert. Für die Version 3 finden Sie die Anleitung unter https://www.supermailer.de/recaptchav3/.

Fügen Sie bei Google reCAPTCHA Ihre eigene Webseite als Version 2 Kästchen "Ich bin kein Roboter"  hinzu. Geben Sie dabei alle Domains ohne www. ein, die auf den eigenen Webspace verweisen. Nur mit den angegebenen Domains wird das reCAPTCHA später funktionieren. z.B.

Google reCAPTCHA registrieren

Klicken Sie auf "Registrieren", danach werden Websiteschlüssel und geheimer Schlüssel sofort angezeigt. Diese beiden Schlüssel sind für den weiteren Einbau notwendig.

Datei mit dem Anmeldeformular und Script newsletter.php auf den lokalen Rechner speichern

Laden Sie die Datei mit dem An-/Abmeldeformular und das Script newsletter.php auf Ihren lokalen Rechner in einen beliebigen Ordner, falls sich die beiden Dateien nicht auf Ihrem lokalen Rechner befinden.

 

Modifizieren des Scripts newsletter.php und der HTML-Datei

Zur Modifikation der Dateien muss ein reiner Texteditor verwendet werden z.B. der Editor aus dem Windows-Zubehör oder Edit4Win https://www.edit4win.de/. Verwenden Sie auf keinen Fall Word oder WordPad.

 

Die HTML-Datei in diesem Beispiel besitzt folgenden Inhalt, der Aufbau Ihrer eigenen Datei mit dem Formular ist ähnlich:

<html>

<head>

<meta http-equiv="Content-Language" content="de">

<meta name="GENERATOR" content="Edit4Win">

<title>Newsletteranmeldung / Newsletterabmeldung</title>

<meta name="viewport" content="width=device-width, initial-scale=1" />

</head>

<body>

<!--Newsletteranmeldung beginnt hier-->

<form method="POST" action="newsletter.php">

  <p>Vorname:<br>

  <input type="text" name="Vorname" size="36"></p>

  <p>Name:<br>

  <input type="text" name="Nachname" size="36"></p>

  <p>E-Mail-Adresse:<br>

  <input type="text" name="EMail" size="36"></p>

  <p>Sie möchten sich zum Newsletter:</p>

  <p><input type="radio" value="subscribe" checked name="Action">Anmelden<br>

  <input type="radio" name="Action" value="unsubscribe">Abmelden</p>

  <p>&nbsp;</p>

  <p><input type="submit" value="Abschicken" name="SubmitBtn"></p>

</form>

<!--Newsletteranmeldung endet hier-->

</body>

</html>

 

 

Vor <p><input type="submit" value="Abschicken" name="SubmitBtn"></p> fügen Sie diesen HTML-Code ein:

<!-- Google reCAPTCHA -->
<div class="g-recaptcha" data-sitekey="<öffentlicher Websiteschlüssel>">
</div>
<!-- Google reCAPTCHA / -->
 

Bei der Angabe <öffentlicher Websiteschlüssel> tragen Sie Ihren eigenen öffentlichen Websiteschlüssel ein, den Sie bei Google reCAPTCHA erhalten haben.

Hinweis: An der Stelle wird später das reCAPTCHA angezeigt werden, die Position ist frei wählbar, muss sich jedoch innerhalb des <form...></form>-HTML-Tags befinden.

 

Nach </form> fügen Sie diesen HTML-Code ein, um das Google reCAPTCHA-JavaScript einzubinden:

<!-- Google reCAPTCHA -->
<script src="https://www.google.com/recaptcha/api.js">
</script>
<!-- Google reCAPTCHA / -->

Übertragen Sie jetzt die modifizierte Datei per (S)FTP auf Ihren Webspace ins korrekte Verzeichnis.

 

 

Öffnen Sie jetzt das PHP-Script newsletter.php im Editor zur Bearbeitung.

Suchen Sie im Script newsletter.php nach ##################################### Spam test

Nach dieser Zeile fügen Sie diesen PHP-Code ein:

/* Google reCAPTCHA */
$PrivateReCaptchaKey="<geheimer Schlüssel>";

$IgnoreCaptcha = false;
if(isset($_GET["IgnoreCaptcha"])) {
$IgnoreCaptcha = true;
}

if ( !$IgnoreCaptcha && ($Action == "subscribe" || $Action == "unsubscribe" || $Action == "edit") ) {
if ( !reCAPTCHACheck() ) {
print "Sie m&uuml;ssen das Captcha best&auml;tigen!";
exit;
}
}
/* Google reCAPTCHA / */
 

Bei der Angabe <geheimer Schlüssel> fügen Sie Ihren geheimen Schlüssel ein, den Sie bei Google reCAPTCHA erhalten haben. Die Fehlermeldung "Sie m&uuml;ssen das Captcha best&auml;tigen!" können Sie selbst beliebig anpassen und ebenfalls in andere Sprachen übersetzen.

 

Im Script newsletter.php gehen Sie ganz ans Ende der Datei, VOR ?> fügen Sie diesen PHP-Code ein:

/* Google reCAPTCHA */
function AskGoogle($host, $path, $data, $port=80){
$peer_key = version_compare(PHP_VERSION, '5.6.0', '<') ? 'CN_name' : 'peer_name';

$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => "POST",
'content' => $data,
'Connection: close',
// Force the peer to validate (not needed in 5.6.0+, but still works
'verify_peer' => true,
'timeout' => 30,
$peer_key => $host,
),
);

$URL = $host."/".$path;
if($port != 443)
$URL = "https://".$URL;
else
$URL = "https://".$URL;

$context = stream_context_create($options);
$ret = file_get_contents($URL, false, $context);
if($ret === false)
return false;
else
return $ret;
}

function reCAPTCHACheck(){
global $REMOTE_ADDR, $PrivateReCaptchaKey;
if(empty($_POST["g-recaptcha-response"])) return false;

$data = "secret=".$PrivateReCaptchaKey."&response=".$_POST["g-recaptcha-response"]."&remoteip=".$REMOTE_ADDR;
$errno = "";
$errstr = "";

$resp = AskGoogle("www.google.com", "recaptcha/api/siteverify", $data, 443);

if (!$resp || ($resp && strpos($resp, '"success": true') === false)) {
return false;
}

unset($_POST["g-recaptcha-response"]);

return true;
}

/* Google reCAPTCHA / */

 

Speichern Sie die Datei und übertragen Sie diese ebenfalls auf Ihren Webspace ins korrekte Verzeichnis.

 

Rufen Sie jetzt im Browser die Seite mit der Newsletter-Anmeldung auf und testen Sie die Anmeldung/Abmeldung mit und ohne Bestätigung des reCAPTCHA.


Beispiel:

Browseransicht reCAPTCHA 

 

Abmeldelink für den Newsletter selbst modifizieren

Sollten Sie im Newslettertext selbst einen Abmeldelink zum direkten Abmelden vom Newsletter verwenden, dann müssen Sie diesen Link korrigieren, d.h. um einen Parameter &IgnoreCaptcha=1 erweitern.

Ist der Abmeldelink unter Menü Projekt – Abmeldelink eingetragen, dann fügen Sie nach &Action=unsubscribe &IgnoreCaptcha=1 in der HTML- und Textvariante des Links hinzu. Die übrigen Scriptparameter müssen unbedingt erhalten bleiben!

Ist der Abmeldelink direkt im E-Mail-Text hinterlegt, dann klicken Sie im SuperMailer mit der rechten Maustaste auf den Link und wählen Sie Hyperlinkeigenschaften. Fügen Sie nach &Action=unsubscribe &IgnoreCaptcha=1 ein. Die übrigen Scriptparameter müssen unbedingt erhalten bleiben!

Beispiel:

Änderung des Abmeldelinks in SuperMailer 

 

Jetzt ist das Script newsletter.php mit reCAPTCHA geschützt.
Die Texte im Anmeldeformular können natürlich verändert werden. Ebenfalls kann eine HTML-Seite, anstatt der Fehlermeldung im Script newsletter.php analog der nicht oder falsch eingegebenen E-Mail-Adresse ausgegeben werden. Die Modifikation müssen Sie selbst vornehmen.

 

Copyright © 2016-2024 Mirko Böer Softwareentwicklungen, Newsletter Software, Serienmail, Werbemail und Rundmail Software SuperMailer

 

 

 

Siehe dazu auch:
SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung mit einem Captcha schützen 
SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung mit reCAPTCHAv2 schützen