SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung
mit einem Captcha schützen

Immer öfter werden Scripte durch Bots aufgerufen um zu testen ob diese für den Spam-Versand geeignet sind. Zur Vermeidung solcher Aufrufe kann man ein Bild mit einem Text darauf verwenden um automatisierte Aufrufe durch andere Scripte zu vermeiden (Spam-Schutz). Es kann somit nur ein Mensch den Text auf dem Bild lesen und das Formular ordnungsgemäß versenden.

Voraussetzungen

Alternativ zu dieser Captcha-Variante kann Google reCAPTCHA verwendet werden, siehe dazu
SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung mit Google reCAPTCHA schützen

 

Einbauanleitung

Das Formular für die Anmeldung/Abmeldung vom/zum Newsletter muss sich innerhalb einer HTML-Datei befinden, ansonsten funktioniert die Captcha-Funktion nicht. In diesem Beispiel wird davon ausgegangen, dass sich diese HTML-Datei im gleichen Verzeichnis wie das Script newsletter.php auf dem Webspace befindet.

 

Captcha-Script auf den Server übertragen

Laden Sie die ZIP-Datei https://www.supermailer.de/captcha/captcha.zip.

Packen Sie die Datei mit Verzeichnissen in einen neuen Ordner auf Ihrem Rechner aus.

Verzeichnis captcha als UnterverzeichnisÜbertragen Sie den kompletten Ordner captcha per FTP/SFTP auf Ihren Webspace in das Verzeichnis in dem sich das Script newsletter.php befindet. Das Verzeichnis captcha muss ein Unterverzeichnis vom Verzeichnis mit der Datei newsletter.php sein.

 


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

Laden Sie die HTML-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 der Dateien

Zur Modifikation der PHP-Datei und/oder HTML-Datei muss ein reiner Texteditor verwendet werden z.B. der Editor (notepad) 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:

<html>

<head>

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

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

<title>Newsletteranmeldung / Newsletterabmeldung</title>

</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="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>

 

Nach  <!--Newsletteranmeldung beginnt hier--> fügen Sie folgenden JavaScript-Aufruf ein:

<!-- Captcha JavaScript -->
<script src="./captcha/captcha.php"></script>
<!-- Captcha JavaScript /-->

 

 

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

<!-- Captcha Zeichenkette -->
Geben Sie die Zeichenkette, wie im nachfolgenden Feld angezeigt, ein (Spam-Schutz)*<br />
<input type="text" name="user_captcha_string" />
<br />
<br />
<img src="./captcha/image.php" id="captcha_internal" alt="Captcha" />
<br />
<a href="javascript:refreshCaptcha();" title="Captcha nicht lesbar?" style="text-decoration: none;font-weight: bolder;font-size: 1.2em;">
&#10227;</a>
<!-- Captcha Zeichenkette /-->
 

Speichern Sie die Datei und übertragen Sie die modifizierte HTML-Datei per SFTP/FTP auf Ihren Webspace ins korrekte Verzeichnis.

Hinweis: Befindet sich die HTML-Datei mit den Newsletteranmeldeformular nicht im gleichen Verzeichnis wie das Script newsletter.php, dann müssen Sie die Angabe ./captcha/ auf das korrekte Verzeichnis (2x) im obigen Code anpassen. z.B. befindet sich das Newsletteranmeldeformular im Verzeichnis / (Hauptverzeichnis/Rootverzeichnis) und das Script newsletter.php im Unterverzeichnis newsletter, dann geben Sie /newsletter/captcha/captcha.php bzw. /newsletter/captcha/image.php an.

 

Öffnen Sie jetzt das 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:

 

/* Captcha */

$CaptchaErrorText = "Sie m&uuml;ssen die Zeichenkette f&uuml;r den Spam-Schutz, wie auf dem Bild angezeigt, korrekt eingeben!";
$IgnoreCaptcha = false;

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


if ( !$IgnoreCaptcha && (($Action == "subscribe") || ($Action == "unsubscribe") || ($Action == "edit")) ) {
if ( (!isset($_POST['user_captcha_string'])) || ($_POST['user_captcha_string'] == '') ) {
print $CaptchaErrorText;
exit;
}

mt_srand(time());
define("InternalCaptchaCheck", mt_rand(1, 65535));
include("./captcha/captcha.php");

$captcha = new captcha(InternalCaptchaCheck);

if ( !$IgnoreCaptcha && $Action != 'confirmation' &&
!$captcha->CheckCaptchaString( $_POST['user_captcha_string'], $_POST['CaptchaId'] )
) {
print $CaptchaErrorText;
exit;
}

}
/* Captcha / */

 

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

Hinweis: Den Text bei $CaptchaErrorText = ".." könnnen Sie beliebig selbst verändern.

 

Rufen Sie jetzt im Browser die Seite mit der Newsletteranmeldung auf und testen Sie die Anmeldung/Abmeldung mit und ohne Eingabe der Zeichenkette, die auf dem Captcha-Bild gezeigt wird.


Beispiel:

Wird das Captcha nicht dargestellt, prüfen Sie die Verzeichnisangaben im HTML-Code des An-/Abmeldeformulars.

 

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:

 

Jetzt ist das Script newsletter.php mit einem Captcha 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.

 

Cross Domain Cookies - Seitenübergreifende Cookies

Das Script newsletter.php und das Captcha-Script muss über die gleiche Domain aufgerufen werden, sonst könnte der Browser das Cookie blocken, damit funktioniert das Captcha nicht mehr. Wenn die Einbauanleitung auf dieser Seite befolgt wird, dann erfolgt der Aufruf automatisch immer über die korrekte Domain.

 

Captcha-Script ohne Cookie verwenden

Zur Speicherung der Lösung für das Captcha wird ein Session-Cookie verwendet. Sollen keine Cookies verwendet werden, kann eine Datei verwendet werden.

Hinweis: Auf hochfrequentierten Webseiten sollte die Speicherung in die Datei nicht verwendet werden, da sich die Daten beim gemeinsamen Zugriff überschreiben könnten.

Öffnen Sie das Script captcha.php in einem Texteditor, am Anfang der Datei finden Sie

Ändern Sie die 0 bei der Konstanten Cookieless auf 1.

Die Datei captcha.dat wurde als leere Datei mitgeliefert und sollte im Verzeichnis des Scripts captcha.php auf dem Webspace sich befinden. Ändern Sie die Rechte der Datei captcha.dat auf 0777, so dass das Script aus der Datei lesen und natürlich auch in die Datei schreiben kann. Speichern Sie das geänderte Script captcha.php und übertragen es erneut auf den Webspace.

 

 

 

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

 

Siehe dazu auch:
SuperMailer Script newsletter.php zur Newsletteranmeldung / Newsletterabmeldung mit Google reCAPTCHA schützen