tas2580
Blog über Webentwicklung und Linux Server

T3Blog mit ReCAPTCHA

tas2580  

Ich verwende gelegentlich für Blogs die ich mit Typo3 aufsetze die Extension T3BLOG 1.1.2. Eigentlich ist es genau das was ich brauche, was mich aber gestört hat war das Captcha bei den Kommentaren. Das Captcha Bild wird über eine PHP-Datei erzeugt die über Parameter konfiguriert werden kann. Das musste also dringend geändert werden da sowas kaum noch Bots aufhält.


Ich habe mit ReCAPTCHA sehr gute Erfahrungen gemacht. Leider kann man ReCAPTCHA nicht einfach per Konfiguration oder Plugin einbinden, zumindest habe ich dazu nichts gefunden. Also habe ich mir mal den Code der T3BLOG Extension angeschaut und mit zwei kleinen Änderungen den Blog auf ReCAPTCHA umgestellt.

Öffne: typo3conf/ext/t3blog/pi1/widgets/blogList/class.singleFunctions.php

suche:
$data['captcha'] = 'tx_t3blog_pi1[blogList][captcha]';
                   
$data['captchaimage'] = '<img src="' t3lib_extMgm::siteRelPath('t3blog') .
'pi1/widgets/blogList/captcha/captcha.php?' .
'font=' htmlspecialchars($this->conf['captchaFont']) .
'&amp;fontSize=' htmlspecialchars($this->conf['captchaFontSize']) .
'&amp;fontColor=' htmlspecialchars($this->conf['captchaFontColor']) .
'&amp;fontEreg=' htmlspecialchars($this->conf['captchaEreg']) .
'&amp;image=' htmlspecialchars($this->conf['captchaBackgroundPNGImage']) .
'&amp;showImage=' htmlspecialchars($this->conf['captchaShowImage']) .
'&amp;backgroundColor=' htmlspecialchars($this->conf['captchaBackgroundColor']) .
'&amp;lines=' htmlspecialchars($this->conf['captchaLines']) .
'" alt="" />';
ersetze mit:
require_once('captcha/recaptchalib.php');
$publickey "PUBLIC_KEY"// you got this from the signup page
//$recaptchaHTML = '<script type="text/javascript">var RecaptchaOptions = {theme : \'clean\'};</script>'; // Style
$data['captchaimage'] = (isset($recaptchaHTML) ? $recaptchaHTML '') . recaptcha_get_html($publickey);

suche:
if ($this->conf['useCaptcha'] == 1) {
    
session_start();
    
$captchaStr $_SESSION['tx_captcha_string'];
    
$_SESSION['tx_captcha_string'] = '';

    if (!
strlen($captchaStr) || $this->localPiVars['captcha'] != $captchaStr) {
        
$errorMessage .= t3blog_div::getSingle(array(
             
'value' => $this->pi_getLL('error_captcha')
             ), 
'errorWrap'$this->conf);
    }
}
ersetze mit:
if ($this->conf['useCaptcha'] == 1
{
    require_once(
'captcha/recaptchalib.php');
    
$privatekey "PRIVATE_KEY";
    
$resp recaptcha_check_answer ($privatekey$_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);

    if (!
$resp->is_valid
    {
        
$errorMessage .= t3blog_div::getSingle(array('value' => $this->pi_getLL('error_captcha')), 'errorWrap'$this->conf);
    }
}

Im dem Code müssen Public und Private Key eingefügt werden. Um die Keys zu bekommen muss die URL der Webseite auf der man ReCAPTCHA verwenden will auf der ReCAPTCHA Seite registriert werden. Außerdem braucht man die recaptchalib.php die man hier runterladen kann. Ich habe die Datei in der Ordner "captcha" innerhelb der T3BLOG Extension kopiert. Hier muss eventuell der Pfad angepasst werden.

Über den Autor

tas2580

Weitere Informationen über mich findest du hier.

Kommentare


Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha