Meowsalot: HTML 5 Pattern

Hallo,

ich habe mich auf der Seite http://pattern.tfcpc.de/pattern-tutorial.php schlau gemacht allerdings zu meinem Problem nichts gefunden.

Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

Bis bald!
Meowsalot (Bernd)

  1. Hallo Meowsalot,

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein.

    Die werden dafür schon ihren Grund haben. Gängele deine Nutzer nicht.

    Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    Formuliere in natürlicher Sprache, welchem Muster die Eingabe entsprechen soll. Erstelle anschließend einen entsprechenden regulären Ausdruck.

    Technisch Versierte können das Attribut mit den Entwicklertools entfernen.

    Bis demnächst
    Matthias

    -- Rosen sind rot.
    1. Hallo Matthias,

      Die werden dafür schon ihren Grund haben. Gängele deine Nutzer nicht.

      ich bitte dich, dieses solltes du mir schon überlassen?

      Technisch Versierte können das Attribut mit den Entwicklertools entfernen.

      Um dieses geht es hier nicht.

      Bis bald!
      Meowsalot (Bernd)

    2. hallo

      Technisch Versierte können das Attribut mit den Entwicklertools entfernen.

      Seit wann ist html ein Ersatz für Validierung?

      -- Neu im Forum! Signaturen kann man ausblenden!
      1. Hallo beatovich,

        Seit wann ist html ein Ersatz für Validierung?

        um den User ein unnötigen Reload zu ersparen. Man muss es dem User so einfach wie möglich machen.

        Bis bald!
        Meowsalot (Bernd)

  2. Hallo Meowsalot,

    ich habe mich auf der Seite http://pattern.tfcpc.de/pattern-tutorial.php schlau gemacht allerdings zu meinem Problem nichts gefunden.

    ähm… welches Problem? Das Folgende?

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    Geht's nur um Zahlen (dann verbiete die doch: nur a-zA-Z erlauben) oder was meinst du genau?

    Gruss
    Henry

    1. Hallo Henry,

      Geht's nur um Zahlen (dann verbiete die doch: nur a-zA-Z erlauben) oder was meinst du genau?

      es geht darum, die Zahlenfolge 123456 ODER 654321 zu verbieten. Ansonsten ist an Zahlen alles erlaubt.

      Bis bald!
      Meowsalot (Bernd)

      Folgende Nachrichten verweisen auf diesen Beitrag:

      1. Hallo Meowsalot,

        es geht darum, die Zahlenfolge 123456 ODER 654321 zu verbieten. Ansonsten ist an Zahlen alles erlaubt.

        Na denn… Da kannst du wieder mal auf regex verzichten.

        <input oninput="if(this.value == '123456' || this.value == '654321'){alert('STOP');}">

        Natürlich als eventlistener und Funktion schöner, aber das kriegst du, glaube ich, selbst hin.

        Gruss
        Henry

        1. Hej Henry,

          es geht darum, die Zahlenfolge 123456 ODER 654321 zu verbieten. Ansonsten ist an Zahlen alles erlaubt.

          Na denn… Da kannst du wieder mal auf regex verzichten.

          Aber warum sollte man? Mit ist es doch einfacher, eleganter und weniger Code…

          Marc

          1. Hallo marctrix,

            Aber warum sollte man? Mit ist es doch einfacher, eleganter und weniger Code…

            ich schrieb ja auch "kann" nicht "sollte". 😉

            Gruss
            Henry

  3. hallo

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    Dazu müsstest du darstellen, was du eigentlich erwartest.

    -- Neu im Forum! Signaturen kann man ausblenden!
    1. Hallo beatovich,

      Dazu müsstest du darstellen, was du eigentlich erwartest.

      habe ich a) in meinem ersten Posting und hier: https://forum.selfhtml.org/self/2018/may/1/html-5-pattern/1721157#m1721157

      Bis bald!
      Meowsalot (Bernd)

  4. Servus!

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    Ja, aber wohl nicht mit dem pattern-Attribut (habe auch gegoogelt und nix gefunden).

    Beat und Matthias Apsel hatten es schon implizit angesprochen: Du musst die Eingabe serverseitig validieren.

    Bis bald!
    Meowsalot (Bernd)

    Herzliche Grüße

    Matthias Scharwies

    -- Es gibt viel zu tun: ToDo-Liste
    1. Servus!

      Servus!

      Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

      Geht doch mit Html5!

      Auf Englisch: "consecutive numbers"

      Hier auf Stack Overflow - schau dir mal die markierte Lösung an.

      Regex for consecutive numbers

      Herzliche Grüße

      Matthias Scharwies

      -- Es gibt viel zu tun: ToDo-Liste
      1. Hallo Matthias,

        da er 111111 nicht verbieten will, sondern 123456 bzw. 654321, passt die SO-Lösung mMn nicht.

        Die Lösung für das angefragte, konkrete Problem wäre für mich ein „negative Lookahead“: (?!123456)(?!654321)\d{6}.

        Eine serverseitige Zusatzprüfung wird dadurch natürlich nicht obsolet. Und ob man damit bockige User zu Disziplin zwingen kann, würde ich auch mal bezweifeln. Wenn 123456 nicht geht, dann eben 123123, 121212 oder sonst irgendwas Geistloses, das schnell getippt ist.

        Die beiden wichtigen Lebensweisheiten lauten hier:

        1. Leg Dich nicht mit Narren an, sie ziehen dich auf ihr Niveau herab und schlagen Dich dort durch Erfahrung.
        2. Mach eine Anwendung narrensicher, dann wird nur ein Narr sie benutzen wollen.

        Rolf

        -- sumpsi - posui - clusi
        1. Hej Rolf,

          Die Lösung für das angefragte, konkrete Problem wäre für mich ein „negative Lookahead“: (?!123456)(?!654321)\d{6}.

          1. Leg Dich nicht mit Narren an,
          2. Mach eine Anwendung narrensicher, dann wird nur ein Narr sie benutzen wollen.

          Hier kann auch die kluge Idee hinter stecken, nicht jedem meine Daten zu geben, selbst wenn er eine Angabe mittels Pflichtfeld erzwingt. Bevor ich dazu ein Plugin oder die Entwicklerwerkzeuge bemühe, tippe ich eine plausible Ziffernfolge ein. Zum Beispiel eine existierende PLZ, nur halt nicht meine eigene.

          Wenn es um PLZ geht sollte man aber auch D 12345 und D-01234 erlauben!

          Marc

          1. @@marctrix

            … tippe ich eine plausible Ziffernfolge ein. Zum Beispiel eine existierende PLZ, nur halt nicht meine eigene.

            Wenn es um PLZ geht sollte man aber auch D 12345 und D-01234 erlauben!

            Wenn es um PLZ geht, sollte man auch SW9 9SL erlauben! PLZ sind keine Ziffernfolgen.

            LLAP 🖖

            -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            1. Hej Gunnar,

              Wenn es um PLZ geht, sollte man auch SW9 9SL erlauben!

              Nur außerhalb Deutschlands.

              Marc

              1. @@marctrix

                Wenn es um PLZ geht, sollte man auch SW9 9SL erlauben!

                Nur außerhalb Deutschlands.

                WWW heißt nicht so, weil es schick aussieht (bspw. als Ligatur). Auch die ersten zwei Ws haben eine Bedeutung. 😜

                LLAP 🖖

                -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
                1. Hej Gunnar,

                  @@marctrix

                  Wenn es um PLZ geht, sollte man auch SW9 9SL erlauben!

                  Nur außerhalb Deutschlands.

                  WWW heißt nicht so, weil es schick aussieht (bspw. als Ligatur). Auch die ersten zwei Ws haben eine Bedeutung. 😜

                  Ich habe beruflich sehr viel mit Webseiten zu tun, in denen nur deutsche Adressen Sinn machen.

                  Marc

        2. Hallo Rolf,

          Eine serverseitige Zusatzprüfung wird dadurch natürlich nicht obsolet. Und ob man damit bockige User zu Disziplin zwingen kann, würde ich auch mal bezweifeln. Wenn 123456 nicht geht, dann eben 123123, 121212 oder sonst irgendwas Geistloses, das schnell getippt ist.

          Die Zahlenkombination 123123 & 121212 gibt es bei uns tatsächlich und ist somit kein Unfug. Es geht hier nur um 123456 und 654321 da diese bei uns Intern aus Gründe gesperrt sind,

          Bis bald!
          Meowsalot (Bernd)

          Folgende Nachrichten verweisen auf diesen Beitrag:

          1. Hallo Meowsalot,

            oh. Hatte PL da jetzt doch recht mit seinen Magic Numbers?

            Na whatever - hilft Dir mein Patternvorschlag?

            Rolf

            -- sumpsi - posui - clusi
  5. Hallo Bernd,

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    Magic Numbers? Das Thema hatten wird doch neulich 😉

    Unterbinden ist nicht möglich also bleibt Dir nur, es zu prüfen: Da wo es ankommt, also am Server und nur da. Auch im Fall Ajax ist das recht einfach möglich (also eine Prüfung nur serverseitig) indem der HTTP Status einbezogen wird, z.B.:

    // Callback xhr.onload = function(){ if( this.status != 200 ){ alert("Fehlermeldung.."); return; } else{ // Erfolgsmeldung } };

    Interessanter ist die Frage, was der Anwender zu sehen bekommen soll wenn er eine Magic Number sendet. Und in welchem Kontext überhaupt dieses Eingabefeld zu befüllen ist.

    Falls diese Magic Numbers irgendwelchen programminternen Dingen vorbehalten sind, wäre es very schlecht das dem Anwender zu kommunizieren. In diesem Fall wäre das Gesamtkonzept langfristig zu überdenken.

    MfG

    1. @@pl

      Magic Numbers?

      Wirfst du wieder mit Begriffen um dich, deren Bedeutung du nicht verstanden hast?

      es zu prüfen: Da wo es ankommt, also am Server und nur da.

      Unsinn.

      LLAP 🖖

      -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      1. Hallo Gunnar,

        wenn ich Bernds Antwort so lese, hat PL es ganz genau und richtig verstanden.

        Rolf

        -- sumpsi - posui - clusi
        1. @@Rolf B

          wenn ich Bernds Antwort so lese

          Du meinst diese?

          hat PL es ganz genau und richtig verstanden.

          Die Zeichenfolgen 123456 („Ist ja [fast] dieselbe Kombination wie an meinem Koffer!“) und 654321 sind nicht das, was ich als magic number bezeichnen würde.

          LLAP 🖖

          -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. Tach!

            Die Zeichenfolgen 123456 („Ist ja [fast] dieselbe Kombination wie an meinem Koffer!“) und 654321 sind nicht das, was ich als magic number bezeichnen würde.

            Nicht die konkrete Zeichenfolge definiert etwas als Magic String, sondern dass bei Verwendung der Zeichenfolge eine bestimmte Aktion ausgelöst wird, die irgendwo hartkodiert im Programmcode steht.

            dedlfix.

            1. @@dedlfix

              Zeichenfolge […], die irgendwo hartkodiert im Programmcode steht.

              Das Irgendwo würde ich sowieso vermeiden und die Zeichenfolgen in einem Array ablegen. Vorzugsweise in einem Format, das sich für server- und clientseitige Prüfung verwenden lässt, bspw. JSON. Dann lassen sich später Änderungen einfach pflegen.

              <?php $blacklist = '["123456", "654321"]'; ?> <script> const blacklist = JSON.parse(<?php echo $blacklist; ?>); const inputElement = document.querySelector(…); if (blacklist.includes(inputElement.value)) { … } </script>

              LLAP 🖖

              -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
              1. Tach!

                Zeichenfolge […], die irgendwo hartkodiert im Programmcode steht.

                Das Irgendwo würde ich sowieso vermeiden und die Zeichenfolgen in einem Array ablegen. Vorzugsweise in einem Format, das sich für server- und clientseitige Prüfung verwenden lässt, bspw. JSON. Dann lassen sich später Änderungen einfach pflegen.

                In diesem konkreten Fall ja. Auch generell ist das eine der Vorgehensweisen, um Magic Values zu vermeiden. Man legt sie in einer Variable oder Konstante ab, aus deren Namen man die Bedeutung erschließen kann.

                <?php $blacklist = '["123456", "654321"]'; ?>

                Ja, aber nicht so, denn dann ist das serverseitig nicht gescheit verwendbar. Lieber direkt als Array notieren.

                $blacklist = [123456, 654321];

                Oder herkömmlich:

                $blacklist = array(123456, 654321);

                Ich gehe mal davon aus, dass es sich um Zahlen und nicht um Ziffernfolgen handelt.

                <script> const blacklist = JSON.parse(<?php echo $blacklist; ?>);

                Statt dieser Weise auch eher wie folgt:

                <script> const blacklist = <?php echo json_encode($blacklist); ?>;

                Somit hat man das beste in beiden Welten, nämlich native Datentypen.

                dedlfix.

                1. Hallo dedlfix,

                  solange diese Blacklist nur für das pattern-Attribut gebraucht wird, könnte man auch aus PHP heraus gleich den Regex-Text dafür generieren und ins Attribut einbauen. Ansonsten sind wir wieder bei dem alten Thema "Daten aus PHP für JS bereitstellen" 😀

                  Rolf

                  -- sumpsi - posui - clusi
            2. Hallo dedlfix,

              Du meinst diese?

              Nicht die konkrete Zeichenfolge definiert etwas als Magic String, sondern dass bei Verwendung der Zeichenfolge eine bestimmte Aktion ausgelöst wird, die irgendwo hartkodiert im Programmcode steht.

              Genau diesen Eindruck habe ich aus Bernds Satz.

              Die weiteren Überlegungen von Gunnar, wo man diese Liste ablegen sollte, sind natürlich relevant. Man kann z.B. beim Rendern der Seite das von mir vorgeschlagene Pattern daraus generieren. Eine brauchbare TE kann das sogar eigenständig an Hand eines Arrays als Template-Variable. 😂

              Rolf

              -- sumpsi - posui - clusi
              1. Hallo Rolf,

                Die weiteren Überlegungen von Gunnar, wo man diese Liste ablegen sollte, sind natürlich relevant.

                das beste wäre, wenn die Daten aus einer Datenbank kommen würden? Dann wären sie jederzeit zu bearbeiten (löschen und editieren). Am besten in eine Tabelle die eh bei jedem Seitenaufruf abgefragt wird.

                Bis bald!
                Meowsalot (Bernd)

                1. Tach!

                  Die weiteren Überlegungen von Gunnar, wo man diese Liste ablegen sollte, sind natürlich relevant.

                  das beste wäre, wenn die Daten aus einer Datenbank kommen würden?

                  Das kann man so pauschal nicht sagen. Wenn die List variable ist, dann Datenbank oder ähnliche Datenhaltung. Wenn sie einigermaßen stabil ist, und Anwender daran nichts zu ändern haben, dann spricht nichts gegen ein Liste in einer nur vom Admin bearbeitbaren Konfigurationsdatei, oder zur Not auch im Quellcode der Anwendung.

                  Dann wären sie jederzeit zu bearbeiten (löschen und editieren). Am besten in eine Tabelle die eh bei jedem Seitenaufruf abgefragt wird.

                  Nein, auf diese Weise sollte man Daten nicht in Tabellen mischen. Jedenfalls nicht, solange die Performance nicht wichtiger als die Wartbarkeit ist. Performance bekommt man aber mit besserer Hardware geregelt, Wartbarkeit und Code-Lesbarkeit hingegen nicht.

                  dedlfix.

  6. @@Meowsalot

    Manche User machen es sich einfach und geben in ein input type="text" einfach 123456 oder 654321 ein. Dieses möchte ich gerne unterbinden. Ist dieses möglich?

    In dem Zusammenhang: https://twitter.com/wortwart/status/992358729680084995 😆

    LLAP 🖖

    -- „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann