Weil ich der wachsenden Flut von Bot-Registrierungen in Joomla Einhalt gebieten wollte, habe ich mich nach Lösungen für das Problem im Internet umgesehen. Zuerst installierte ich das Joomla Plugin Bad Behavior, leider zeigte es keinerlei Wirkung, täglich registrierten sich 6-8 neue Bots. Dann versuchte ich es mit einem verstecktem Eingabe Feld im Registrierungsformular, bei der entsprechenden PHP-Abfrage musste ich allerdings passen. Letztenendes integrierte ich reCAPTCHA in mein Joomla Registrierungsformular. Seit diesem Zeitpunkt hat sich kein einziger Bot mehr registrieren können, reCAPTCHA erfüllt seine Aufgabe bisher sehr gut.

 

Der Einbau von reCAPTCHA in ein bestehendes Joomla Projekt gestaltet sich sehr einfach. Zuerst solltet ihr das für eure Version passende Plugin von dieser Webseite herunterladen…

 

Christoph Aeschlimann, hat ein paar Anpassungen am Plugin vorgenommen, unter anderem sind die benötigten Keys bereits im Plugin enthalten. Wer keinerlei Veränderungen an den entsprechenden Joomla Core-Dateien vorgenommen hat kann die auf der Webseite enthaltene Anleitung 1:1 umsetzen und schon ist reCAPTCHA einsatzbereit.

 

Da ich nur ein Captcha für mein Registrierungsformular benötigte, und ich ausserdem mein Registrierungsformular im Joomla Code angepasst hatte, bin ich ein wenig anders vorgegangen. In der Datei components/com_user/views/register/tmpl/default.php habe ich vor der Zeile:

 

<button class="button validate"><!--p echo JText::_('Register');--></button>

 

den folgenden Code eingefügt:

 

<!-- reCAPTCHA Start -->
<?php
require_once(JPATH_SITE.'/recaptcha/recaptchalib.php');
$rc = recaptcha_get_html();
if (!$rc->error) {
	echo "<div style=\"margin:20px;\">";
	echo $rc->captcha;
	echo "</div>";
} else {
  JError::raiseWarning('',JText::_($rc->error));	
}
?>
<!-- reCAPTCHA Ende -->

 

Danach habe ich in der Datei components/com_user/controller.php vor der Zeile:

 

// If there was an error with registration, set the message and display form

 

den folgenden Code eingefügt:

 

//reCAPTCHA Start
		require_once(JPATH_SITE.'/recaptcha/recaptchalib.php');
		$resp = recaptcha_check_answer ($_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
 
		if (!$resp-&gt;is_valid) {
		  JError::raiseWarning('',JText::_('RECAPTCHA INCORRECT'));
		  $this-&gt;setRedirect( $_SERVER['HTTP_REFERER'] );
		  return false;
		}
		//reCAPTCHA Ende

 

Nun habe ich in der deutschen Sprachdatei language/de-DE/de-DE.com_user.ini folgende Zeilen ganz am Ende der Datei angefügt:

 

RECAPTCHA API=Um CAPTCHA zu nutzen brauchst du einen API key von <a href="http://recaptcha.net/api/getkey">http://recaptcha.net/api/getkey</a>
RECAPTCHA IP=Aus Sicherheitsgründen muss die IP-Adresse an reCAPTCHA übergeben werden.
RECAPTCHA INCORRECT=Deine CAPTCHA Eingabe war leider nicht korrekt. Bitte versuche es noch einmal.

 
Zuletzt müssen nur noch die folgenden Dateien in Root-Verzeichnis von Joomla kopiert werden:

  1. recaptcha/recaptchalib.php
  2. recaptcha/recaptcha_data.php 

Da ich meine Core-Dateien nicht einfach durch die des Plugin ersetzt habe, sondern den Captcha-Code von Hand eingefügt habe, sind alle meine vorher gemachten Veränderungen an den besagten Core-Dateien erhalten geblieben.

 

Freundliche Grüsse
Jan

Bookmarke diese Seite bei: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können. Linkarena del.icio.us Digg Y!GG Webnews Technorati StumbleUpon Google Bookmarks Facebook TwitThis