Seite 1 von 2
Zeichenkette bei Registrierung verbieten
Verfasst: 29.07.2005 16:38
von krotthowe
Wie kann ich im Registrierungsformular eine bestimmte Zeichenkette in einem Feld z.B. Beruf verbieten?
Habe dazu leider nirgends etwas gefunden.
Gruss und Dank im voraus,
Karsten
Verfasst: 30.07.2005 20:37
von cYbercOsmOnauT
Dazu musst Du die usercp_register.php modden. Wenn du nich viel Ahnung von PHP hast, ist es natürlich etwas vertrackt. Wie möchtest du denn die gesperrten Wörter verwalten? Sollen das feste gesperrte Wörter sein oder auch über das ACP einstellbar?
Verfasst: 31.07.2005 11:04
von krotthowe
Genau das ist mein Problem, ich hatte mir die usercp_register.php schon angeschaut, da aber meine php-Kenntnisse minimal sind, habe ich es nicht hinbekommen. Müsste aber nicht eher die functions_validate.php angepassst werden?
Ich brauche nur eine Zeichenkette, daher muss sie nicht über das ACP veränderbar sien.
Gruß
Karsten
Verfasst: 01.08.2005 01:26
von cYbercOsmOnauT
Im functions_validate.php kannst Du die "böse Zeile" einfach nur löschen lassen, aber dies führt zu keiner Fehlermeldung. Du kannst die Checkroutine dort aber nehmen und ein wenig ummodeln.
Versuch das Folgende hier mal. Ich hab es nicht ausprobiert (leider kaum Zeit). Es sollte aber seine Funktion erfüllen.
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature);
#
#-----[ AFTER, ADD ]------------------------------------------
#
$check_var = array('aim', 'msnm', 'yim', 'location', 'occupation', 'interests', 'sig'); // Hier stehen die Felder, die auf das Badword geprüft werden sollen.
$badword = 'Coolboy'; // Hier Dein verbotenes Wort reinpacken.
for($i = 0; $i < count($check_var_length); $i++)
{
if ( $$check_var == $badword )
{
$error = true;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . 'Verbotene Zeichenfolge eingegeben!';
}
}
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Zeichenkette verbieten
Verfasst: 01.08.2005 23:35
von krotthowe
Danke für Deine Hilfe, hat aber leider nicht funktioniert.
Hiermit hat es dann geklappt:
Code: Alles auswählen
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
}
}
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
if( $mode == 'editprofile' || $mode == 'register' )
{
if (strstr($occupation, 'beliebiger String'))
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Occupation_wrong'];
}
}
#
#-----[ OPEN ]------------------------------------------
#
languages/lang_german/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['Fields_empty'] = 'Du musst alle benötigten Felder ausfüllen.';
#
#-----[ AFTER, ADD ]------------------------------------------
#
$lang['Occupation_wrong'] = 'eigene Fehlermeldung.';
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
Gruß
Karsten
Verfasst: 02.08.2005 01:47
von cYbercOsmOnauT
Das war dann ein Missverständnis zwischen uns. Ich wusste nicht, dass Du auf Teilstrings prüfen willst. Dann müsstest Du bei meinem Code nur eine Zeile ändern.
Aus
wird
Verfasst: 04.08.2005 23:47
von krotthowe
Danke
Gruß Karsten
Verfasst: 13.08.2007 17:24
von dopppeldecker
Wäre es denn mit viel Umstand verbunden das mit einer Eingabe im ACP zu versehen ? Sprich das man im ACP bestimmt Wörter oder Zeichenfolgen angibt welche bei der Registrierung nicht genutzt werden dürfen.
Verfasst: 15.08.2007 17:38
von dopppeldecker
Wie sähe der Code denn aus wenn man mehrere Badwords angeben will.
Verfasst: 21.08.2007 16:49
von mgutt
Wenn Du PHP5 hast, kannst Du mit
str_replace() arbeiten.
In dem Fall baust Du dir ein Array:
und "ersetzt" die verbotenen Wörter (keine Angst machst du nicht wirklich), aber $count zählt wie oft das gemacht werden konnte und so weißt du, dass ein wort drin ist. also:
Code: Alles auswählen
$count = 0;
if ( str_replace($badwords, '', $$check_var, $count) && $count )
Ich denke das müsste ganz gut funktionieren.
Gruß