Nur alphanumerische Usernamen zulassen

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Nur alphanumerische Usernamen zulassen

Beitrag von oxpus »

Wer kennt das nicht:
Mit der Zeit wächst die Userzahl und die Usernamen werden immer chaotischer, da beinahe der gesamte Zeichensatz ausgenutzt wird.

Um nun zu verhindern, daß Sonderzeichen in Usernamen verwendet werden, wäre folgender Code zu installieren:

Code: Alles auswählen

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

#
#-----[ FIND ]-----
#
	if ( $board_config['allow_namechange'] || $mode == 'register' )
	{

#
#-----[ AFTER, ADD ]-----
#
		$check_string = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
		$check_errors = 0;

		for ($i = 1; $i <= strlen($username); $i++)
		{
			$j = $i - 1;
			$check_char = $username{$j};
			if (!strpos($check_string, $check_char))
			{
				$check_errors++;
			}
		}

		if ($check_errors != 0)
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['Username_not_alphanumeric'], $check_errors);
		}


#
#-----[ OPEN ]-----
#
language/lang_english/lang_main.php

#
#-----[ FIND ]-----
#
?>

#
#-----[ BEFORE, ADD ]-----
#
$lang['Username_not_alphanumeric'] = 'The username must be alphanumeric. The entered name haves %s invalid chars!';

#
#-----[ OPEN ]-----
#
language/lang_german/lang_main.php

#
#-----[ FIND ]-----
#
?>

#
#-----[ BEFORE, ADD ]-----
#
$lang['Username_not_alphanumeric'] = 'Der Benutzername muss alphanumerisch sein. Der eingegebene Name beinhaltet %s ungültige Zeichen!';


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoM
Damit sind zunächst nur alphanumerische Usernamen möglich.
Dieses kann erweitert werden, in dem zur Variable $check_string weitere Zeichen hinzugefügt und damit erlaubt werden.
Den Fehlertext sollte man dann ggf. entsprechend anpassen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Sehr sehr gute Idee!!!

Ich hab (zukünftig hatte ;)) das bisher über eine gepflegte name_disallow-Liste im ACP gelöst. :)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Chrisu
Beiträge: 11
Registriert: Mo 09.Mai, 2005 16:26
Wohnort: Regen
Kontaktdaten:

Beitrag von Chrisu »

Hallo,

ich habe für mein Forum einen kleinen "Realnamen-Mod" gebastelt, der testen soll ob der eingegebene Name auch wirklich aus zwei (sinnvollen/gültigen) Teilen (Vorname Nachname) besteht. Natürlich sollen dabei auch ungültige Zeichen/Zahlen abgefangen werden, nur habe ich in Ermangelung von php-Kenntnissen Unsicherheiten ob das so in Ordnung ist.

Der entsprechende Code sieht bei mir so aus:

Code: Alles auswählen

if (!eregi("^[a-zA-Z ßäöüÄÖÜ\.\-]+$",$username)) // Sonderzeichen abfangen
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Username_sonder1'];
}
(Buchstaben, Umlaute, ß, Leerzeichen, Punkte (z.B. für einen Namen wie "Hans v. Hintertupfingen") und Bindestriche (z.B. für Doppelnamen) sollten im Namen erlaubt bleiben.)

Vielleicht kann mir jemand sagen, wie obiger Code richtig(er) lauten müßte.

Gruß,
Chris
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

@oxpus: Schließt dein Code Leerzeichen ebenfalls aus? Wenn nicht, liese sich das noch integrieren?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

@modbo
Mein Code schliesst alle Zeichen aus, die nicht in der Variable $check_string enthalten sind.

@Chrisu
Du solltest es mal mit den HTML-Codes für die Umlaute probieren.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

Versuch es mal so:

Code: Alles auswählen

	if(!eregi('^[*spaces a-z äöü_.-]+$', $username))
	{
		$error = TRUE;
		$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Username_sonder1'];      
	}
Ne kleine Anmerkung bei eregi brauchste die Gross und Kleinschreibung nicht zu beachten. So wie ich es da drin stehen habe reicht das völlig.

Mfg Bootenks.
Nur ein Informatik Student. ^^
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Code: Alles auswählen

$lang['Username_not_alphanumeric'] = 'Der Benutzername muss alphanumerisch sein. Der eingegebene Name beinhaltet %s ungültige Zeichen!';
Hier soll doch auch die Anzahl der ungültigen zeichen ausgegeben werden (%s), oder? Passiert bei mir nicht.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Mit welchem Code?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

[quote="oxpus - Di 17.Mai, 2005 14:15";p="32181"]Mit welchem Code?[/quote]
Na mit deinem, von "da oben" :)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wieder ein Zeichen schuld:

Code: Alles auswählen

$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['Username_not_alphanumeric'], $check_error);
muss so lauten:

Code: Alles auswählen

$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['Username_not_alphanumeric'], $check_errors);
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Chrisu
Beiträge: 11
Registriert: Mo 09.Mai, 2005 16:26
Wohnort: Regen
Kontaktdaten:

Beitrag von Chrisu »

@ Bootenks:

Danke! :) Klappt ebenfalls. (Habe nur das mit dem Unterstrich rausgenommen, der kommt in einem richtigen Namen ja nicht vor.)

Direkt "falsch" war/ist mein Code aber nicht gewesen oder?

Gruß,
Chris
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nein. Kleine Bugs eben. Wie sie jeder Programmierer erzeugt.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
modbo
Beiträge: 1344
Registriert: Mo 13.Dez, 2004 11:18
Kontaktdaten:

Beitrag von modbo »

Thx @oxpus, funktioniert :)
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

Hallo!

Ich hab ebenfalls den oben genannten Code eingebaut um zu verhindern das keine alphanumerische Zeichen verwendet werden. Nur:
wen ich mich mit dem Benutzernamen "Sauerkraut" registrieren will, kommt folgende Meldung:

Der Benutzername muss alphanumerisch sein. Der eingegebene Name beinhaltet 2 ungültige Zeichen!

:)

Woran kann das liegen?
Zuletzt geändert von LotteB am Mi 26.Okt, 2005 13:08, insgesamt 2-mal geändert.
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Welchen Code genau hast Du eingebaut?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

Ich habe folgenden Code eingebaut:

Code: Alles auswählen

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

#
#-----[ FIND ]-----
#
	if ( $board_config['allow_namechange'] || $mode == 'register' )
	{

#
#-----[ AFTER, ADD ]-----
#
		$check_string = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
		$check_errors = 0;

		for ($i = 1; $i <= strlen($username); $i++)
		{
			$j = $i - 1;
			$check_char = $username{$j};
			if (!strpos($check_string, $check_char))
			{
				$check_errors++;
			}
		}

		if ($check_errors != 0)
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['Username_not_alphanumeric'], $check_errors);
		}


#
#-----[ OPEN ]-----
#
language/lang_english/lang_main.php

#
#-----[ FIND ]-----
#
?>

#
#-----[ BEFORE, ADD ]-----
#
$lang['Username_not_alphanumeric'] = 'The username must be alphanumeric. The entered name haves %s invalid chars!';

#
#-----[ OPEN ]-----
#
language/lang_german/lang_main.php

#
#-----[ FIND ]-----
#
?>

#
#-----[ BEFORE, ADD ]-----
#
$lang['Username_not_alphanumeric'] = 'Der Benutzername muss alphanumerisch sein. Der eingegebene Name beinhaltet %s ungültige Zeichen!';


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoM
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, aber

Code: Alles auswählen

$check_string = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
müsste dann auf dieses gekürzt werden:

Code: Alles auswählen

$check_string = '0123456789';
Vielleicht noch "_()/" dazu, aber dann wars das auch, denn mehr dürfte ja in einer Telefonnummer nicht vorkommen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

Sorry, wie kommst du auf Telefonnummern? - Ich verstehe nur Bahnhof...
Ich möchte lediglich mit diesem Snippe verhindern, dass Sonderzeichen als Benutzername benutzt werden. D.h. Das alle Buchstaben und Zahlen erlaubt sind. Sprich: der Benutzername soll sich aus alphanummerischen Zeichen zusammensetzen. Wen ich jetzt 0123456789 in die Variable eingeben, können ja nurnoch Zahlen als Name verwendet werden. Und das ist nicht das Ziel.

Oder hab ich da am Skript selbst was falsch verstanden?
Zuletzt geändert von LotteB am Mi 26.Okt, 2005 15:36, insgesamt 2-mal geändert.
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh, sorry, da hab ich jetzt mal wieder kräftig gemischt. :!:

Hm, okay. Scheinbar wird $username bei Dir noch vor dieser Prüfung "verändert". Füge doch mal vor

Code: Alles auswählen

for ($i = 1; $i <= strlen($username); $i++)
die Zeilen

Code: Alles auswählen

$username_save = $username;
$username = $HTTP_POST_VARS['username'];
und vor

Code: Alles auswählen

     if ($check_errors != 0)
diese Zeile ein:

Code: Alles auswählen

$username = $username_save;
Vielleicht gehts so wieder...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

Geht leider auch nicht.
Es kommt die selbe Fehlermeldung...
Hast du noch einen Vorschlag?

PS: Interesant ist, das ich mich mit anderen Namen registrieren kann, nur nicht mit "Sauerkraut"...
Ich hab auch rausbekommen welche 2 Zeichen das Script störend findet: es sind die beiden "a"´s.
Wen ich die Rausnehme klapps...
und wen ich einen anderen Namen nimm in dem "a"´s vorkommen wie z.B. "Apfel" klappt die registrierung...
Zuletzt geändert von LotteB am Mi 26.Okt, 2005 17:28, insgesamt 1-mal geändert.
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh, ja. Ersetze mal

Code: Alles auswählen

for ($i = 1; $i <= strlen($username); $i++)
mit

Code: Alles auswählen

for ($i = 0; $i < strlen($username); $i++)
Zuletzt geändert von oxpus am Mi 26.Okt, 2005 21:09, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

Jetzt kommt ne dicke Fehlermeldung:
Warning: strpos(): Empty delimiter. in /www/htdocs/4800/includes/usercp_register.php on line 475

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/4800/includes/usercp_register.php:475) in /www/htdocs/4800/includes/page_header.php on line 775

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/4800/includes/usercp_register.php:475) in /www/htdocs/4800/includes/page_header.php on line 777

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/4800/includes/usercp_register.php:475) in /www/htdocs/4800/includes/page_header.php on line 778


gefolgt von dem Hinweis das jetzt 3 Zeichen ungültig sind...
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

Sorry LotteB das mit telefonnummer ist auf mein mist gewachsen :D hab in ein anders thema den link hergesetzt ob ich den code wenden kann und da hat wohl dann opxus ausversehn hier auch geantwortet, tja kann mal passiern :D
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

@LotteB
Häng doch mal Deine usercp_register.php an, dann kann ich mit dieser mal testen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
LotteB
Beiträge: 36
Registriert: Di 11.Okt, 2005 17:24
Kontaktdaten:

Beitrag von LotteB »

@Christian_N: Achso, und ich dachte schon :"was den jetzt los...?" :)

@Oxpus: Datei befindet sich im Anhang...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Das wahre UnrealEd Support-Forum. Von Mappern f?r Mapper.
Bild
Antworten