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. Mit einem kostenlosen Script CaptchaImageMaker (http://www.ebiene.de/) kann man den Schutz mit einem Captcha einfach realisieren.

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 anderen PHP-Datei befinden, ansonsten funktioniert die Captcha-Funktion nicht. In diesem Beispiel wird davon ausgegangen, dass sich diese PHP-Datei im gleichen Verzeichnis wie das Script newsletter.php auf dem Webspace befindet.

 

CaptchaImageMaker Script auf den Server übertragen

Laden Sie jetzt die ZIP-Datei http://www.supermailer.de/captcha/captcha_image_maker.zip .

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

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

 


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

Laden Sie die PHP-Datei und das Script newsletter.php auf Ihren lokalen Rechner in ein beliebiges, falls sich die beiden Dateien nicht auf Ihrem lokalen Rechner befinden.

 

Modifizieren der PHP-Dateien

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

 

Die PHP-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>

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

</body>

</html>

 

Vor dem <html>-Tag fügen Sie in der ersten Zeile folgenden PHP-Code ein:

<?php

   /* Captcha */

   header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

   /* Session starten */

   @session_start();

   /* Klassen einbinden */

   require 'captcha_image_maker/require/config.php';

   require 'captcha_image_maker/require/crypt.class.php';

   /* Crypt-Klasse initialisieren */

   $GLOBALS['crypt_class'] = new crypt_class();

   /* Captcha */

?>

 

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

<?php

  // captcha

  echo 'Geben Sie das Wort, wie im nachfolgenden Feld angezeigt, ein (Spam-Schutz):<br>';

  echo '<input type="text" name="user_captcha_string"><br><br>';

  echo '<img src="captcha_image_maker/require/image.php?'. md5(uniqid(rand(), true)).'">';

?>

 

Übertragen Sie die modifizierte PHP-Datei per FTP auf Ihren Webspace ins korrekte Verzeichnis.

 

Ö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 */

  $IgnoreCaptcha = false;

  if(isset($_GET["IgnoreCaptcha"])) {

    $IgnoreCaptcha = true;

  }

 

  header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');


  /* Session starten */

  @session_start();

 

  /* Klassen einbinden */

  require 'captcha_image_maker/require/config.php';

  require 'captcha_image_maker/require/crypt.class.php';

 

  /* Crypt-Klasse initialisieren */

  $GLOBALS['crypt_class'] = new crypt_class();

 

  if ( (!$IgnoreCaptcha) && (($Action == "subscribe") || ($Action == "unsubscribe") || ($Action == "edit")) )  {

    if ( (!isset($_POST['user_captcha_string'])) || ($_POST['user_captcha_string'] == '') ) {      # if captcha is empty

      print "Sie müssen das Wort für den Spam-Schutz, wie auf dem Bild angezeigt, korrekt eingeben.!";

      exit;

    }

 

    if ( (!$IgnoreCaptcha) && $Action != 'confirmation' && ($_POST['user_captcha_string'] !=

      $GLOBALS['crypt_class']->base64_decode_advanced( $_SESSION['captcha_string']) ) ) {     # captcha check

      print "Sie müssen das Wort für den Spam-Schutz, wie auf dem Bild angezeigt, korrekt eingeben.!";

      exit;

    }

  }

   /* Captcha */

 

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

 

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:

 

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.

 

Copyright © 2008-2016 Mirko Böer Softwareentwicklungen, Newsletter Software und E-Mail-Marketing Software SuperMailer

 

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