frage zu regestrierungsformular, bestimmte Zeichen nicht erlauben

spikaner

Quereinsteiger @ php
Wie kann ich es sicherstellen das bei einen Registrierungsformular alle Buchstaben, Zahlen, Sonderzeichen bis auf " ' ; \ / genutz werden dürfen?
Fand auch schon ein paar hinweise aber die sind alle recht kompliziert umschrieben und bisher musse ich mich noch nicht wirklich mit den Thema Sicherheit bei der Registrierung auseinandersetzen.
Wenn jemand nen Link oder Codeschnipsel hätte wär ich dankbar.

mfg Spikaner
 
Einen wunderschönen Guten Morgen,

also soweit ich weiß (bitte korrigiert mich, falls ich falsch liege), kann man in Formularen generell erstmal alle Zeichen verwenden. Die Sonderzeichen, die du nicht drin haben willst, würd ich via strstr(); suchen und eine Fehlermeldung ausgeben.

Aber auch mal eine prinzipielle Frage. Wozu Sonderzeichen? Reicht es nicht Groß- und Kleinschreibung und Zahlen zu nutzen?

Gruß
 
Du kannst das über RegEx testen.

Hier meine Funktion für namen:

PHP:
function check_names($name) {
  if (ereg("^([a-zA-Z öüäßÖÜÄ '-]+)$", $name) && $name != "" && strlen($name) >= 3 && strlen($name) <= 30)
    { return true; } else { return false; };
}

für benutzernamen:

PHP:
function check_unames($uname) { 
	if (ereg("^([_a-zA-Z0-9 öüäßÖÜÄ '-]+)$", $uname) && $uname != "" && strlen($uname) >= 3 && strlen($uname) <= 30 )
    { return true; } else { return false; };
}

Du musst dir also nur den Suchstring so anpassen wie du es haben willst =]
 
Zuletzt bearbeitet:
@CraisiePrinzZ: Prinzipel will ich den Usern erlauben Sonderzeichen z.B. beim Nick "Lalla_Oberbürgermeister", Passwort "ich+32sind(in)" zu nutzen nur eben bestimmte Zeichen nicht manche User haben halt solche Angewohnheiten und die will ich nicht gleich beim registrieren vergraulen.

@Smokers: Ähh und genau da liegt der hacken, hab mit RegEx bis dato noch nix am Hut gehabt

mfg Spikaner
 
Zuletzt bearbeitet:
naja leg fest welche zeichen erlaubt sein sollen

dann nimmste einfach meine Funktion:

Code:
function check_names($name) {
  if (ereg("^([a-zA-Z öüäßÖÜÄ '-]+)$", $name) && $name != "" && strlen($name) >= 3 && strlen($name) <= 30)
    { return true; } else { return false; };
}

Und dann bastelst du einfach alle Zeichen die erlaubt sein sollen in den roten Bereich rein.
Beachte aber das bei Sonderzeichen ein " \ " davorstehen muss.


Ansonsten gibt es eine wunderbare Seite :

http://regexp-evaluator.de/evaluator/

Dort wird dir sowas generiert.
Jedoch sind Generatoren nie so genau wie simples nachdenken und damit befassen ^^
 
Zuletzt bearbeitet:
Hallo,

(hab mir erlaubt deine Funktion noch etwas upzudaten, Smokers)
Folgender reguläre Ausdruck bedeutet:
Eingabe darf nicht leer sein, min. 3, max. 30 Zeichen,
erlaubt: a bis z, A bis Z, 0 bis 9 sowie äöü ÄÖÜ + - * , . : _ ( ) ! = { } § #
(einfach nach dem gleichen Schema auf deine Wünsche anpassen)
PHP:
function check_names($input){
	return preg_match('/^[a-zA-Z0-9äöüÄÖÜ\+\-\*\,\.\:\_\(\)\!\=\{\}\§\#]{3,30}$/',$input) ?  true :  false;
}

Anwendungsbeispiel:
PHP:
if(check_names($_POST['name'])){
// gültige Eingabe
}
else{
// fehlerhafte Eingabe
}
 
Cool

thx für das Update,
bin selber RegExp Anfänger.=)

Aber preg_match is eh schneller als ereg, von daher ist das schon besser ^^

*g*

thx
 
Danke Drucko genau so brauch ich es , Smokers der link ist auch zu gebrauchen, hab ihn gleich mal gespeichert.. , somit Thema erledigt nach 2Std 30min im Forum.
Danke für die schnelle Hilfe

mfg Spikaner
 
Zurück