Tipps und Tricks zu SEO

Tipps und Tricks zu SEO

ReCaptchaJComments, eine der beliebtesten Kommentar-Erweiterungen für das Content Management System Joomla, verfügt von Haus aus über ein Captcha, um ungewünschten Spam zu vermeiden. Viele möchten jedoch lieber das von Google bereitgestellte ReCaptcha nutzen. Welche Änderungen dazu am Code von JComments notwendig sind, lest Ihr hier.


Die Nachteile des bei JComments mitgelieferten Captchas, dem KCaptcha, sind aus meiner Erfahrung zwei Dinge:

  1.     Es ist nicht sicher. Manche Skripte schaffen es, das Captcha zu umgehen.
  2.     Auf meiner Webseite war es nicht möglich, auf Smartphones das Captcha zu lösen. Selbst bei richtiger Eingabe gab es eine Fehlermeldung.

Googles ReCaptcha ist momentan eines der sichersten Captchas und steht für Nutzer mit einem Google-Konto kostenlos zur Verfügung. Joomla verfügt außerdem ab der Version 2.5 von Haus aus über ein Plugin, um ReCaptcha einzubinden.
Das Problem besteht nur darin, das ReCaptcha auch für JComments zu nutzen, denn hier gibt est erst einmal keine Möglichkeit, weitere Captchas außer dem mitgelieferten KCaptcha einzubinden. Wie es dennoch gelingt, ReCaptcha für JComments zu verwenden, ist in der folgenden Anleitung zu sehen. Diese basiert auf einer spanischen Quelle, die ich im Netz gefunden habe. Leider funktioniert der Link inzwischen nicht mehr.

Aktualisiert: Hier gibt es einen Tipp, wie man JComments mit ReCaptcha 2 nutzen kann.

Bitte beachtet: Es gibt keine Garantie, dass dies auch funktioniert. Mögliche Nebenwirkungen auf Eurer Webseite kann ich nicht ausschließen. Daher solltet Ihr das ganze erst einmal auf einem Testsystem ausprobieren. Immer vorher aus Sicherheitsgründen ein Backup der Webseite erstellen!

Ich gehe von folgenden Systemkomponenten aus:

  • Joomla ab Version 2.5.14
  • JComments in der Version 2.3.0

 

Schritt 1: ReCaptcha einrichten

Um ReCaptcha nutzen zu können, benötigt man ein Google-Konto. Dann lässt sich unter der Adresse https://www.google.com/recaptcha ein Schlüsselpaar erzeugen. Den öffentlichen und den privaten Schlüssel muss man danach im Joomla-Plugin „Captcha – ReCaptcha“ eintragen. Das Plugin muss zudem aktiviert werden.

Plugin "Captcha - ReCaptcha" für Joomla


Im Anschluss ist in der Joomla-Konfiguration unter „Site“ als Standard-Captcha das ReCaptcha auszuwählen.

Captcha-Konfiguration in Joomla


Achtung: Google hat unlängst die URL für die ReCaptcha-API geändert. Daher muss in Joomla gegebenenfalls die Datei plugins/captcha/recaptcha/recaptcha.php angepasst werden:
 Zeile 22  ändern in RECAPTCHA_API_SERVER URL of 'http://www.google.com/recaptcha/api'
 Zeile 24 ändern in RECAPTCHA_VERIFY_SERVER URL of 'www.google.com'
 Zeile 129 ändern in RECAPTCHA_VERIFY_SERVER value of '/recaptcha/api/verify'

 

Schritt 2: JComments anpassen

Jetzt kommt der etwas schwierigere Teil, denn für die Komponente JComments müssen einige Dateien angepasst werden.
In der Datei [JOOMLA]/administrator/components/com_jcomments/admin.jcomments.php gibt es in Zeile 1066 diesen Eintrag:

$captcha[] = JCommentsHTML::makeOption('kcaptcha', 'KCAPTCHA');


Hinter diesen Eintrag folgende Zeile setzen:

$captcha[] = JCommentsHTML::makeOption('recaptcha', 'recaptcha by Gnumla.com');


In der Datei [JOOMLA]/components/com_jcomments/tpl/default/tpl_form.php beginnt dann in Zeile 114 folgender Codeabschnitt: 

if ($this->getVar('comments-form-captcha', 0) == 1) {
$html = $this->getVar('comments-form-captcha-html');
if ($html != '') {
echo $html;
} else {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
    <span>
        <img class="captcha" onclick="jcomments.clear('captcha');" id="comments-form-captcha-image"

src="/<?php echo $link; ?>" width="121"height="60" alt="

<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');">

<?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha"

type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
}
}
?>


Diesen ersetzen wir durch den folgenden Code:


if ($this->getVar('comments-form-captcha', 0) == 1) {
$html = $this->getVar('comments-form-captcha-html','kcaptcha');
if ($html == 'kcaptcha') {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
<span>
<img class="captcha" onclick="jcomments.clear('captcha');"

id="comments-form-captcha-image" src="/<?php echo $link; ?>" width="121" height="60" alt="

<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');">

<?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha" type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
} else {
$link = JCommentsFactory::getLink('captcha');
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
?>
<p>
<span>
<div id="dynamic_recaptcha_1"></div>
    </span>
</p>
<?php
}
}
?>

Im Dokument [JOOMLA]/components/com_jcomments/jcomments.ajax.php beginnt in Zeile 275 folgender Code:


if ($acl->check('enable_captcha') == 1)
{
$captchaEngine = $config->get('captcha_engine', 'kcaptcha');
if ($captchaEngine == 'kcaptcha')
    {
require_once( JCOMMENTS_BASE.DS.'jcomments.captcha.php' );
if (!JCommentsCaptcha::check($values['captcha_refid']))
{
JCommentsCaptcha::destroy();
$response->addScript("jcomments.clear('captcha');");
return $response;
}
}
else
    {
$result = JCommentsEvent::trigger('onJCommentsCaptchaVerify',

array($values['captcha_refid'], &$response));
// if all plugins returns false
if (!in_array(true, $result, true))
; {
self::showErrorMessage(JText::_('ERROR_CAPTCHA'));
return $response;
}
    }
}

Diesen ersetzen wir durch diesen Code:


if ($acl->check('enable_captcha') == 1)
{
$captchaEngine = $config->get('captcha_engine', 'kcaptcha');

if ($captchaEngine == "recaptcha")
    {
$post = JRequest::get('post');  
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
; $resp = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if(!$resp[0]){
self::showErrorMessage(JText::_('ERROR_CAPTCHA'), 'captcha');
$response->addScript("Recaptcha.reload()");
; return $response;
}
else
{
$response->addScript("Recaptcha.reload()");
}
    }elseif ($captchaEngine == 'kcaptcha')
    {
require_once( JCOMMENTS_BASE.DS.'jcomments.captcha.php' );
if (!JCommentsCaptcha::check($values['captcha_refid']))
{
self::showErrorMessage(JText::_('ERROR_CAPTCHA'), 'captcha');
JCommentsCaptcha::destroy();
$response->addScript("jcomments.clear('captcha');");
return $response;
}
} else
    {
$result = JCommentsEvent::trigger('onJCommentsCaptchaVerify',

array($values['captcha_refid'], &$response));
// if all plugins returns false
if (!in_array(true, $result, true))
{
self::showErrorMessage(JText::_('ERROR_CAPTCHA'));
return $response;
}
    }

}

Schritt 3: freuen!

Mit diesen Änderungen sollte nun ReCaptcha im Auswahlmenü von JComments zur Verfügung stehen (unter „Settings / Layout“). Bei meinen Tests hat alles gut funktioniert. Doch selbst testen solltet Ihr auf jeden Fall. Viel Spaß!

 


Christian Kunz

Von Christian Kunz

SEO-Experte.
Sie benötigen Beratung für Ihre Webseite? Klicken Sie hier


Anzeige

SEO-Vergleich


Verwandte Beiträge

SEO-Newsletter bestellen

Im monatlichen SEO-Newsletter erhaltet Ihr eine Übersicht der jeweils zehn wichtigsten SEO-Meldungen des Monats. Mit dem SEO-Newsletter bleibt Ihr auf dem Laufenden.
Ich bin mit den Nutzungsbedingungen einverstanden


 

Anzeige

rnkeffect

Premium-Partner (Anzeige)


Anzeigen

sedo

SEO Freelancer

SEO Agentur aus Darmstadt

SEO-Vergleich

Online Solutions Group


Sprecher auf

Onsite-Optimierung

Onsite-Optimierung

 

SEO- und Suchmaschinenblogs

SEO-FAQ

Bild © FM2 - Fotolia.com

Bekannt aus

Website Boosting


Internet World Business

SEO United


The SEM Post


Webselling

SEO selber machen

SEO selber machen

Jetzt vernetzen

SEO-Glossar

SEO-Glossar

 

SEO im Ohr, der Podcast von SEO Südwest: aktuell Folge

SEO-Beratung

Wir bringen gemeinsam Ihre Webseite in Google nach vorne. Profitieren Sie von jahrelanger SEO-Erfahrung.

Social Networks und RSS-Feed

Auszeichnungen

seo19 sieger sichtbarkeit 2020 200x200px