Zum Inhalt springen

PHP-Skript zur Captcha-Einbindung in Supermailer-Anmeldeformular

Erstellt am 6. Mai 2009 · 4 Antworten · letzte Antwort am 6. Mai 2009

Tags: PHP, Frage

Unbekannter Benutzer ·

Hallo Board,

bin grad etwas am verzweifeln hier. Hab fast 2 Stunden nach ner Lösung für ein Problem gesucht, aber nichts gefunden.

Ich soll auf einer Website mit TYPO3 3.7.0 in ein Anmeldeformular ein Captcha einfügen. Das Newsletterskript und das Anmeldeformular sind von http://www.supermailer.de (was ich insgesamt sehr empfehlen kann).

Die Anmeldung hatte ich bisher als HTML-Datensatz eingefügt:

<!--Newsletteranmeldung beginnt hier-->

<form method="POST" action="fileadmin/nl-script/newsletter.php">
  <p><font face="Verdana, Arial, Helvetica" size="2">Anrede:</font><br />
  <select name="Anrede" value="">
  <option name="Herr">Herr</option>
  <option name="Frau">Frau</option>
  </select></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihr Vorname:<br />
  <input type="text" name="Vorname" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihr Name:<br />
  <input type="text" name="Nachname" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihre E-Mail-Adresse:<br />
  <input type="text" name="EMail" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Strasse:<br />
  <input type="text" name="Strasse" size="37" /></font></p>  
  <p><font face="Verdana, Arial, Helvetica" size="2">PLZ:<br />
  <input type="text" name="PLZ" size="37" /></font></p>    
  <p><font face="Verdana, Arial, Helvetica" size="2">Ort:<br />
  <input type="text" name="Stadt" size="37" /></font></p>   
  <p><font face="Verdana, Arial, Helvetica" size="2">Sie möchten sich für
  unseren Newsletter</font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2"><input type="radio" value="subscribe" checked="" name="Action" />
  anmelden<br />
  <input type="radio" name="Action" value="unsubscribe" /> abmelden</font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">(Für die Abmeldung reicht das Eintragen der E-Mail-Adresse)</font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">
  <input type="submit" value="Abschicken" name="SubmitBtn" /></font>
  <br /><br />
  </p>
</form>
<!--Newsletteranmeldung endet hier-->

Dann gibts hier die Captcha-Lösung für die Newsletter-Anmeldung:

<?php

   /* Captcha */

   /* Session starten */

   @session_start();

   /* Klassen einbinden */

   require 'fileadmin/nl-script/captcha_image_maker/require/config.php';

   require 'fileadmin/nl-script/captcha_image_maker/require/crypt.class.php';

   /* Crypt-Klasse initialisieren */

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

   /* Captcha */

?>

<!--Newsletteranmeldung beginnt hier-->

<form method="POST" action="fileadmin/nl-script/newsletter.php">
  <p><font face="Verdana, Arial, Helvetica" size="2">Anrede:</font><br />
  <select name="Anrede" value="">
  <option name="Herr">Herr</option>
  <option name="Frau">Frau</option>
  </select></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihr Vorname:<br />
  <input type="text" name="Vorname" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihr Name:<br />
  <input type="text" name="Nachname" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Ihre E-Mail-Adresse:<br />
  <input type="text" name="EMail" size="37" /></font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">Strasse:<br />
  <input type="text" name="Strasse" size="37" /></font></p>  
  <p><font face="Verdana, Arial, Helvetica" size="2">PLZ:<br />
  <input type="text" name="PLZ" size="37" /></font></p>    
  <p><font face="Verdana, Arial, Helvetica" size="2">Ort:<br />
  <input type="text" name="Stadt" size="37" /></font></p>   
  <p><font face="Verdana, Arial, Helvetica" size="2">Sie möchten sich für
  unseren Newsletter</font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2"><input type="radio" value="subscribe" checked="" name="Action" />
  anmelden<br />
  <input type="radio" name="Action" value="unsubscribe" /> abmelden</font></p>
  <p><font face="Verdana, Arial, Helvetica" size="2">(Für die Abmeldung reicht das Eintragen der E-Mail-Adresse)</font></p>
  
  <?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="fileadmin/nl-script/captcha_image_maker/require/image.php?'. md5(uniqid(rand(), true)).'" alt="" />';

?>

  <p><font face="Verdana, Arial, Helvetica" size="2">
  <input type="submit" value="Abschicken" name="SubmitBtn" /></font>
  <br /><br />
  </p>
</form>
<!--Newsletteranmeldung endet hier-->

Frage: Wie kann ich dem 3.7.0-System sagen, dass er das PHP erkennt?
Jede Hilfe wär echt toll. 🙂

Oliver
[/quote]

Julian.​Hofmann ·

Hallo Oliver.

Der sauberste und sicherste Weg (sowohl sicher, dass es funktioniert, als auch, dass gewisse Sicherheitsmaßen unterstützt werden) dürfte das Einbauen als Extension sein.

Viele Grüße
Julian

Unbekannter Benutzer · · Beste Antwort

Hi Julian,

danke erstmal für den Hinweis. Kannst du mir denn einen Tipp geben, wie ich das als Extension einbauen kann?

Gibt es nicht eine Möglichkeit PHP in Datensätze einzufügen?

Gruß
Oliver

Julian.​Hofmann ·

Es gibt schon Möglichkeiten.
TYPO3 hatte urspünglich sogar Boardmittel dafür (z.B. in Version 4.0). Diese Möglichkeit ist inzwischen herausgenommen bzw. defaultmäßig ausgeschaltet (tt_content.type=script) - was auch Sinn macht. PHP gehört in programmierrhand, nicht in Redakteurshände.
Es gibt auch ein paar Extensions, die versuchen PHP einzubinden...

Sobald Du aber umfangreichere Skripte einbauen willst, kommst Du in der Regel da nicht weit. Mittels Extension kann man ggf. auch externe Programmmodule einbinden.
Ein recht bekanntes Beispiel dürfte die EXT:phpmyadmin sein, die einen Rahmen bereitstellt, die Kernfunktion aber durch den Code von phpMyAdmin erfüllt wird.