---
title: "Captcha für mm_forum User Registration möglich?"
url: "https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich"
source: "typo3.net"
tags: ["Extensions","Frage","Frontend-Benutzer","Sicherheit"]
created: "2008-01-26"
last_reply: "2008-02-02"
replies: 5
solved: false
page: 1
pages: 1
lang: "de"
---

# Captcha für mm_forum User Registration möglich?

Extensions · 5 Antworten · gestartet 2008-01-26

## Eröffnungsbeitrag

**latschma** · 2008-01-26 · [Beitrag #1](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/1)

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

## Antworten

### [#2](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/2) · m.​helmich · 2008-01-26

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

### [#3](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/3) · latschma · 2008-01-26

Danke,

gibt es eine Anleitung für Dummies?

Schönen Tag

### [#4](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/4) · latschma · 2008-01-27

Diese Dateien alle ändern?:

<http://svn.typo3.net/comp.php?repname=mm_forum&path=%2F&compare%5B%5D=%2F@161&compare%5B%5D=%2F@162>

### [#5](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/5) · JimmyBlue · 2008-02-01

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:

```php
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>&nbsp;&nbsp;&nbsp;'.$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>&nbsp;&nbsp;&nbsp;'.$this->pi_getLL('error.usernameChars').' ('.implode(', ',$matches[0]).')';
			$marker["fehler"] = 1;
			$marker["###VALUE_username###"] = str_replace('"','&quot;',$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>&nbsp;&nbsp;&nbsp;'.$this->pi_getLL('error.usernameExists');
				$marker["fehler"] = 1;
			}
		}

		// Validate email address
		if (!tx_mmforum_pi2::validate_email($this->data["email"])) {
			$marker["###ERROR_email###"] = '<br>&nbsp;&nbsp;&nbsp;'.$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>&nbsp;&nbsp;&nbsp;'.$this->pi_getLL('error.emailExists');
				$marker["fehler"] = 1;
			}
		}

		// Check password
		if ($this->data["password"] != $this->data["password_again"]) {
			$marker["###ERROR_password###"] = '<br>&nbsp;&nbsp;&nbsp;'.$this->pi_getLL('error.passwordMismatch');
			$marker["fehler"] = 1;
		}

		if (strlen($this->data['password'])<6) {
			$marker["###ERROR_password###"] = '<br>&nbsp;&nbsp;&nbsp;'.$this->pi_getLL('error.passwordLength');
			$marker["fehler"] = 1;
		}

		if (strlen($this->data['name'])<1) {
			$marker["###ERROR_name###"] = '<br>&nbsp;&nbsp;&nbsp;'.$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>&nbsp;&nbsp;&nbsp;'.$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:

```php
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:

```html
<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

### [#6](https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich/6) · latschma · 2008-02-02

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:

```html
<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.

---

Quelle: „Captcha für mm_forum User Registration möglich?“, typo3.net, https://www.typo3.net/d/72916-captcha-fuer-mm-forum-user-registration-moeglich
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
