Seite 1 von 2

Sonderzeichen verbieten

Verfasst: 04.09.2006 16:48
von mark2
Habe in der Suche nicht wirklich etwas passedes gefunden.

Gibt es keinen Mod oder Code der mit einem Rundumschlag alle Sonderteichen und auch die ASCII zeichen wie ├ ╔ ┘Æ usw verbietet.
Ich habe schon den Code der die Nicklänge beschränkt eingebaut. Dadurch wird das schon etwas eingeschränkt aber mann kann sich immer noch mit solchem gerümpel anmelden. Dieser Nick ging zum Beispiel. Æ&#;&

Den Mod restrict_username_beta_v1_1_6 hab ich gefunden. Dort muß man aber auch die Zeichen einzeln eintragen wenn ich das richtig sah.

Klar kann man im ACP die Zeichen alle einzeln verbieten aber das dauert weig und dann ist nicht sicher dass man wirklich alle werwischt hat. Das sollte doch anderst zu lösen sein.

Verfasst: 04.09.2006 18:21
von MagMo
Hi,

wie wäre es hiermit:

Code: Alles auswählen

#---[ OPEN ]---
includes/usercp_register.php

#---[ FIND ]---
	$username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';

#---[ AFTER, ADD ]---
	if (preg_match('/[^a-z0-9_ -]/i', $username))
	{
		$error = true;
		$error_msg .= '...deine Fehlermeldung...';
	}

#---[ FIND ]---
			$error_msg = $lang['Fields_empty'];

#---[ REPLACE WITH ]---
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
Das habe ich nicht getestet, daher auf jeden Fall die Datei vorher sichern.

Damit sollten nur noch Benutzernamen zulässig sein, die nur Buchstaben (klein und groß), Zahlen, Unterstrich, Bindestrich oder Leerzeichen enthalten. Alles andere sind unzulässige Zeichen.

Den Text ...deine Fehlermeldung... musst du natürlich noch durch eine sinnvolle Fehlermeldung ersetzen bzw. in einem mehrsprachigen Forum durch eine entsprechende language-Variable.

Grüße
MagMo

Verfasst: 04.09.2006 19:09
von mark2
Ja das funktioniert. Allerdings sperrt etwas zu viel. Sogar die Umlaute ä,ö,ü,ß funktionieren nicht mehr.

kann man da noch was ändern ?
wenn ich das richtig verstehe gibt man in der Zeile an was erlaubt ist oder

Code: Alles auswählen

if (preg_match('/[^a-z0-9_ -]/i', $username)) 

Verfasst: 04.09.2006 19:18
von mark2
Hab es schon rausgefunden. Einfach dran hängen !

Code: Alles auswählen

if (preg_match('/[^a-z0-9üöäß_ -]/i', $username)) 
Läuft super! Danke für den Code

Verfasst: 07.10.2006 15:28
von .deluxe
moin...

also das hab ich auch alles so gemacht und fehlermeldung klappt auch 1A,
allerdings ist es jetzt so bei mir, wenn ich zB im profil was ergänze,
kommt nicht "ihr profil wurde aktualisiert" sondern die selbe fehlermeldung, die ich auch schon habe für den falschen benutzernamen mit ungültigen zeichen drin!?

was kann ich da nun machen?

Verfasst: 07.10.2006 20:02
von mark2
Dann wird wohl dein Benutzername ein ungültiges Zeichen enthalten.

Wie lautet dein Benutzername in deinem Board ?

Entweder du änderst deinen Namen oder du fügst das Zeichen das du verwendest hinzu.

Verfasst: 08.10.2006 15:21
von MagMo
Hi,
.deluxe hat geschrieben:...die ich auch schon habe für den falschen benutzernamen mit ungültigen zeichen drin!?
Wenn du dort auch den Benutzername ".deluxe" verwendest, dann ist klar warum da die Fehlermeldung kommt. Der Punkt ist kein zulässiges Zeichen nach obiger Regel.
Wenn du den Punkt auch erlauben willst, dann mußt du ihn einfach in regulären Ausdruck einfügen. Dabei nicht das Maskieren mit einem Backslash vergessen! Ansonsten erlaubst du wieder jedes Zeichen!
Beispiel:

Code: Alles auswählen

if (preg_match('/[^a-z0-9\._ -]/i', $username))
Grüße
MagMo

Verfasst: 20.01.2007 11:37
von seev
Kann man so etwas auch für den Titel eines Beitrages eingeben. Ich habe Probleme, mit den Keywörtern in der Url., wenn manche Sonderzeichen eingetragen werden. ^^ oder ` zum Beispiel

Verfasst: 20.01.2007 12:11
von ultrasmd77
seev hat geschrieben:Kann man so etwas auch für den Titel eines Beitrages eingeben. Ich habe Probleme, mit den Keywörtern in der Url., wenn manche Sonderzeichen eingetragen werden. ^^ oder ` zum Beispiel
Moin seev... :D

Hatte hier das Problem schon geschildert: Klick

Verfasst: 20.01.2007 12:19
von seev
Die Online Welt ist klein :D

Hat jemand eine Lösung für mein Problem?