Thread Verfasser: TBR
Thread ID: 1452
Thread Info
Es gibt 3 Beiträge zu diesem Thema, und es wurde 2293 Mal angesehen.
 Thema drucken
Länge des Nickname festlegen.
TBR
hallo zusammen,

ich wollte mal fragen, ob man die länge des nickname bei der registrierung irgendwo im adminmenü festlegen kann oder ob jemand einen codeschnipsel dafür hat?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Krelli
In der Datei includes/classes/UserFielsInput.class.php, ca. ab Zeile 186 steht dieser Codeabschnitt:

if (!preg_check("/^[-0-9A-Z_@\s]+$/i", $this->_userName)) {
  $this->_setError("user_name", $locale['u120']);
} else {
  $name_active = dbcount("(user_id)", DB_USERS, "user_name='".$this->_userName."'");
  $name_inactive = dbcount("(user_code)", DB_NEW_USERS, "user_name='".$this->_userName."'");
  if ($name_active == 0 && $name_inactive == 0) {
    $this->_userLogFields[] = "user_name";
    $this->_setDBValue("user_name", $this->_userName);
  } else {
    $this->_setError("user_name", $locale['u121']);
  }
}
Da müsstest du vor dem ersten } else { eine zusätzl. Bedingung einfügen, so dass der Abschnitt anschließend so aussieht:

if (!preg_check("/^[-0-9A-Z_@\s]+$/i", $this->_userName)) {
  $this->_setError("user_name", $locale['u120']);
} elseif (strlen($this->_userName) > 15) { // Begrenzung auf max. xx Zeichen beim Usernamen
  $this->_setError("user_name", "Der gewählte Benutzername ist zu lang (max. 15 Zeichen)!");
} else {
  $name_active = dbcount("(user_id)", DB_USERS, "user_name='".$this->_userName."'");
  $name_inactive = dbcount("(user_code)", DB_NEW_USERS, "user_name='".$this->_userName."'");
  if ($name_active == 0 && $name_inactive == 0) {
    $this->_userLogFields[] = "user_name";
    $this->_setDBValue("user_name", $this->_userName);
  } else {
    $this->_setError("user_name", $locale['u121']);
  }
}

Diese Lösung ist zwar "hardcoded", also ohne dass die Textausgabe in die Locales aufgenommen wird, aber zumindest funktioniert das. Weder bei Registrierung noch bei späterer Änderung des Benutzernamens (falls erlaubt) sind nun mehr als 15 Zeichen erlaubt.

Statt der 15 kannst du einen eigenen Wert festlegen. Beachte aber dass der 2 mal vorkommt und somit 2x angepasst werden muss:
Zeile
} elseif (strlen($this->_userName) > 15) {
für die gesetzte Begrenzung und
$this->_setError("user_name", "Der gewählte Benutzername ist zu lang (max. 15 Zeichen)!");
für die Fehlermeldung, falls der Wert überschritten wurde.
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
TBR
vielen dank für deine mühe, systemweb.
funktioniert!!!

super beschrieben :-)
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: