Hallo Liebe Forengemeinde,
mein Name ist Lars und ich arbeite mich zur Zeit zurück in die Welt der Webentwicklung.
Ich bin gerade dabei die Sicherheit eines Passwortes über Ajax während der Eingabe zu prüfen und vergebe für verschiedene Bestandteile wie kleine und Große Buchstaben, Zahlen und Sonderzeichen Punkte, die ich dann addiere und entsprechend ausgebe. Es funktioniert auch fast alles einwandfrei. Um das Passwort auf seine Bestandteile zu prüfen, nutze ich preg_match. Hierbei treten zwei Phänomene auf, bei denen ich euch um Hilfe bitten möchte.
Mein Code / PHP Version 7.1.9 :
Gebe ich eine Zahl ein erhalte ich 11 anstatt 6 Punkte. Nehme ich die vierte Abfrage der Sonderzeichen raus, erhalte ich 6 Punkte. Wo ist mein Fehler in der Abfrage der Sonderzeichen, dass eine Zahl hier als Treffer gewertet werden kann?
Das Zweite Phänomen ist, dass egal ob ich kleine oder große Umlaute eingebe, ich ebenfalls jedesmal auf 12 Punkte komme, da in diesem Falle die ersten beiden Abfragen einen Treffer angeben und die mb_strlen Umlaute als 2 Zeichen erkennt. Wie kann man mit Umlauten verfahren, damit er hier die Groß- und Kleinschreibung unterscheiden kann und die Stringlänge (aus Menschensicht) richtig gewertet wird?
ich danke euch im Voraus.
mein Name ist Lars und ich arbeite mich zur Zeit zurück in die Welt der Webentwicklung.
Ich bin gerade dabei die Sicherheit eines Passwortes über Ajax während der Eingabe zu prüfen und vergebe für verschiedene Bestandteile wie kleine und Große Buchstaben, Zahlen und Sonderzeichen Punkte, die ich dann addiere und entsprechend ausgebe. Es funktioniert auch fast alles einwandfrei. Um das Passwort auf seine Bestandteile zu prüfen, nutze ich preg_match. Hierbei treten zwei Phänomene auf, bei denen ich euch um Hilfe bitten möchte.
Mein Code / PHP Version 7.1.9 :
PHP-Code:
$password = utf8_encode($_GET['q']);
$saftypoints = mb_strlen($password);
if (preg_match("/[a-züöä]/", $password)) {
$saftypoints += 5;
}
if (preg_match("/[A-ZÜÖÄ]/", $password)) {
$saftypoints += 5;
}
if (preg_match("/[0-9]/", $password)) {
$saftypoints += 5;
}
if (preg_match("/[,.-;:_!?]/", $password)) {
$saftypoints += 5;
}
Das Zweite Phänomen ist, dass egal ob ich kleine oder große Umlaute eingebe, ich ebenfalls jedesmal auf 12 Punkte komme, da in diesem Falle die ersten beiden Abfragen einen Treffer angeben und die mb_strlen Umlaute als 2 Zeichen erkennt. Wie kann man mit Umlauten verfahren, damit er hier die Groß- und Kleinschreibung unterscheiden kann und die Stringlänge (aus Menschensicht) richtig gewertet wird?
ich danke euch im Voraus.


Kommentar