Ankündigung

Einklappen
Keine Ankündigung bisher.

Regulärer Ausdruck macht Probleme

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regulärer Ausdruck macht Probleme

    Hi,

    ich überprüfe Benutzerpasswörrter nach Eingabe eines Passwortes auf Komplexität.

    Die Kriterien sind folgende:
    - Länge 6-20
    - Zahlen sind erlaubt ( min. 1 )
    - Buchstaben groß/klein sind erlaubt
    - bestimmte Sonderzeichen "!?§$%&" sind erlaubt ( nicht zwingend )

    Dies ist mein Ausdruck bisher:
    PHP-Code:
    <?php
    $eingabe 
    "5bAdf1858";

    if (
    preg_match('/^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$/'$eingabe)) {
        echo 
    "Sicher";
    } else {
        echo 
    "Unsicher";
    }
    ?>
    Mein Problem sind die Sonderzeichen, die konnte ich noch nicht erfolgreich abfragen.

    Vielen Dank im Voraus,
    ingohill

  • #2
    wo ist das problem mit den sonderzeichen ? Dinge wie ? oder $ haben halt in regulären ausdrücken gewisse bedeutungen, daher musst du sie passend escapen:

    \? bzw. \$
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

    Kommentar


    • #3
      Das ich die Sonderfälle escapen muss, weiß ich.
      Ich scheitere daran, nur bestimmte Sonderzeichen zu erlauben z.B.: §$%&)(!?@

      Mit Gruss,
      Ingohill

      Kommentar


      • #4
        Hallo,

        finde ich nicht sinnvoll nur eine bestimmte Auswahl an Sonderzeichen zu erlauben. Andernfalls zertrenn doch die Bedingungen, genau so wie du sie formuliert hast:

        - Länge 6-20
        Warum eine Längenbeschränkung? Du machst hoffentlich einen Hash aus dem Passwort, dann ist die Eingabelänge egal, da könntest du sogar die Bibel reinkopieren.
        Siehe:
        [MAN]mb_strlen[/MAN]

        - Zahlen sind erlaubt ( min. 1 )
        Zahlen sind wohl eher Pflicht?
        preg_match("/\d/", $password)


        - Buchstaben groß/klein sind erlaubt
        Erlaubt oder Pflicht?


        - bestimmte Sonderzeichen "!?§$%&" sind erlaubt ( nicht zwingend )
        Wenn sie nicht zwingend sind, brauchst du es auch nicht prüfen.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar

        Lädt...
        X