Ist jemandem eine Lösung bekannt um Captcha in die User Registration des MM_Forums einzubauen?
Mit dem MM-Forum ist es jetzt wunderbar still mit den Forum Spammern. Allerdings tragen sich deren Registration-Bots ununterbrochen als neue User ein. Da möchte ich noch gerne Captcha eingebaut haben bevor ein neuer User die Registrierung abschicken kann.
Grüße
Hallo,
in der aktuell im Repository verfügbaren Version ist bereits Captcha-Unterstützung eingebaut. Zwar funktioniert der SVN-Download zur Zeit nicht, dies wird jedoch in nächster Zeit behoben.
Martin
Danke,
gibt es eine Anleitung für Dummies?
Schönen Tag
Hallo latschma!
Ich habe bei meiner Installation des grandiosen mm_forums Captcha erfolgreich eingebunden, läuft alles. Habe allerdings in der letzten Version - also glaube 0.1.2 - installiert und dann nochmal upgegradet. Vielleicht gehts jetzt einfacher...
Also: Änderungen in class.tx_mmforum_pi2.php durchführen:
1. function validate($marker) sieht bei mir so aus:
function validate($marker)
{
$marker["fehler"] = 0;
$this->data['username'] = trim($this->data['username']);
$this->data['password'] = trim($this->data['password']);
if(is_array($this->data)){
while(list($k,$v)=each($this->data)) {
if($k !="username" AND $k !="password"){
$this->data[$k] = htmlspecialchars($v);
}
}
}
$marker["###VALUE_username###"] = $this->data['username'];
$marker["###VALUE_password###"] = "";
$marker["###VALUE_password_again###"] = "";
$marker["###VALUE_name###"] = $this->data['name'];
$marker["###VALUE_beruf###"] = $this->data['beruf'];
$marker["###VALUE_address###"] = $this->data['address'];
$marker["###VALUE_interessen###"] = $this->data['interessen'];
$marker["###VALUE_www###"] = $this->data['www'];
$marker["###VALUE_email###"] = $this->data['email'];
$marker["###VALUE_msn###"] = $this->data['msn'];
$marker["###VALUE_yim###"] = $this->data['yim'];
$marker["###VALUE_aim###"] = $this->data['aim'];
$marker["###VALUE_icq###"] = $this->data['icq'];
$marker["###VALUE_skype###"] = $this->data['skype'];
/*
* Check username
* A username must be at least 3 characters long and has a maximum length of 30 chars.
* There must be no invalid chars.
*/
if ((strlen($this->data['username']) < $this->conf['username_minLength']) || (strlen($this->data['username']) > $this->conf['username_maxLength'])) {
$marker["###ERROR_username###"] = '<br> '.$this->pi_getLL('error.usernameLength');
$marker["fehler"] = 1;
}
if (preg_match_all("/[^".preg_quote($this->conf['username_allowed'])."]/i",$this->data['username'],$matches)) {
$matches[0] = array_unique($matches[0]);
$marker["###ERROR_username###"] = '<br> '.$this->pi_getLL('error.usernameChars').' ('.implode(', ',$matches[0]).')';
$marker["fehler"] = 1;
$marker["###VALUE_username###"] = str_replace('"','"',$marker['###VALUE_username###']);
}
// Checks if username already exists in database
if (!$marker["fehler"]) {
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'*',
'fe_users',
'username LIKE "'.$this->data['username'].'" AND deleted=0 AND pid='.$this->conf['userPID']
);
if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) {
$marker["###ERROR_username###"] = '<br> '.$this->pi_getLL('error.usernameExists');
$marker["fehler"] = 1;
}
}
// Validate email address
if (!tx_mmforum_pi2::validate_email($this->data["email"])) {
$marker["###ERROR_email###"] = '<br> '.$this->pi_getLL('error.emailInvalid');
$marker["fehler"] = 1;
}
// Check if email address already exists in database
else
{
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'email',
'fe_users',
'email="'.$this->data['email'].'" AND deleted=0'
);
IF ($GLOBALS['TYPO3_DB']->sql_num_rows($res) >= 1) {
$marker["###ERROR_email###"] = '<br> '.$this->pi_getLL('error.emailExists');
$marker["fehler"] = 1;
}
}
// Check password
if ($this->data["password"] != $this->data["password_again"]) {
$marker["###ERROR_password###"] = '<br> '.$this->pi_getLL('error.passwordMismatch');
$marker["fehler"] = 1;
}
if (strlen($this->data['password'])<6) {
$marker["###ERROR_password###"] = '<br> '.$this->pi_getLL('error.passwordLength');
$marker["fehler"] = 1;
}
if (strlen($this->data['name'])<1) {
$marker["###ERROR_name###"] = '<br> '.$this->pi_getLL('error.nameNone');
$marker["fehler"] = 1;
}
// CAPTCHA-Abfrage
if (t3lib_extMgm::isLoaded('captcha')) {
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];
$_SESSION['tx_captcha_string'] = '';
} else {
$captchaStr = -1;
}
if($this->data['captchaResponse'] != $captchaStr) {
$marker["###ERROR_captcha###"] = '<br> '.$this->pi_getLL('error.captcha');
$marker["fehler"] = 1;
} else {
$valid_captcha = true;
}
return $marker;
}
2. function makeMarker() muss ebenfalls geändert werden und sieht nachher so aus:
function makeMarker()
{
$marker = array();
$marker["###ERROR_username###"] = "";
$marker["###ERROR_password###"] = "";
$marker["###ERROR_name###"] = "";
$marker["###ERROR_email###"] = "";
$marker["###HIDDENFIELDS###"] = "";
$marker["###ERROR_captcha###"] = "";
$marker["###VALUE_username###"] = $this->data['username'];
$marker["###VALUE_password###"] = $this->data['password'];
$marker["###VALUE_password_again###"] = $this->data['password_again'];
$marker["###VALUE_name###"] = $this->data['name'];
$marker["###VALUE_beruf###"] = $this->data['beruf'];
$marker["###VALUE_address###"] = $this->data['address'];
$marker["###VALUE_interessen###"] = $this->data['interessen'];
$marker["###VALUE_www###"] = $this->data['www'];
$marker["###VALUE_email###"] = $this->data['email'];
$marker["###VALUE_msn###"] = $this->data['msn'];
$marker["###VALUE_yim###"] = $this->data['yim'];
$marker["###VALUE_aim###"] = $this->data['aim'];
$marker["###VALUE_icq###"] = $this->data['icq'];
$marker["###VALUE_skype###"] = $this->data['skype'];
if (t3lib_extMgm::isLoaded('captcha')){
$marker["###CAPTCHA###"] = $captchaHTMLoutput = '<img src="'.t3lib_extMgm::siteRelPath('captcha').'captcha/captcha.php" alt="" />';
} else {
$marker["###CAPTCHA###"] = '';
}
return $marker;
}
3. und das muss dann natürlich noch ins Template der User-Reg:
<p>###CAPTCHA###<br /><br />
<input type="text" name="tx_mmforum_pi2[reg][captchaResponse]" value=""> <span class="error">###ERROR_captcha###</span></p>
Ich hoffe das hilft Dir weiter
LG
Christian
Funktionierte sofort beim Einbau in den Code vom mm_forum Version 0.1.4 . Die Extension Captcha hatte ich bereits hochgeladen.
In die Template /typo3conf/ext/mm_forum/res/tmpl/default/fe_user_reg/fe_user_registrierung.html
habe ich den von Dir angegebenen Code vor der Zeile
<p>###HIDDENFIELDS###
eingegeben.
Habe den Code folgendermassen mit "label" eingegeben, damit Captcha mit Eingebefeld im selben Format wie die darüberliegenden Felder sind:
<p><label for="captcha">###CAPTCHA###</label>
<input type="text" name="tx_mmforum_pi2[reg][captchaResponse]" value="" /> <span class="error">###ERROR_captcha###</span></p>
Vielen Dank!
Nachtrag:
Jetzt ist Ruhe mit den Log-in Spammern.