PHP-Neuling: Prüfen ob mindestens 100 Zeichne vorhanden sind

Einen schönen guten Abend,

ich bin PHP Neuling und hätte eine kleine Frage, ist es möglich dass ich prüfe wie viele Zeichen ein User ein eine Textbox geschrieben hat? Es müssen mindestens 100 Zeichen sind.

Meine Felder prüfen ich so

if(empty($_POST['land'])) {  
            $userFehler[] = "Bitte wählen Sie ein Land aus";  
}

Mit HTML5 ist dieses soweit ich weiß nicht möglich oder? Auf der anderen Seite sollte ich dennoch eine Prüfung mit PHP machen sollte versucht werden eine andere Prüfung zu umgehen oder?

  1. Om nah hoo pez nyeetz, PHP-Neuling!

    Mit HTML5 ist dieses soweit ich weiß nicht möglich oder?

    Es gibt das pattern-Attribut, ein Tutorial liefert dir den passenden regulären Ausdruck.

    Auf der anderen Seite sollte ich dennoch eine Prüfung mit PHP machen sollte versucht werden eine andere Prüfung zu umgehen oder?

    Ja.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Mini und Ministrant.

    1. @@Matthias Apsel:

      nuqneH

      Es gibt das pattern-Attribut, ein Tutorial liefert dir den passenden regulären Ausdruck.

      Hier gar nicht nötig. Es gibt das minlength-Attribut.

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Hier gar nicht nötig. Es gibt das minlength-Attribut.

        Hab es im Google Chrome getestet wie in der Anleitung steht, leider ohne Erfolg. Ich kann auch nur ein A schreiben und es geht durch obwohl ich gesagt habe mindestens 4 Zeichen. Daher für mich nicht zu gebrauchen.

        1. Om nah hoo pez nyeetz, PHP-Neuling!

          Hab es im Google Chrome getestet wie in der Anleitung steht, leider ohne Erfolg. Ich kann auch nur ein A schreiben und es geht durch obwohl ich gesagt habe mindestens 4 Zeichen. Daher für mich nicht zu gebrauchen.

          Glauben ist zwar nicht wissen, aber das glaube ich nicht. Ich glaube eher, du machst etwas falsch.

          Es könnte unter Umständen (d.h. vielleicht) an einer fehlenden oder nicht zutreffenden Doctypeangabe liegen.

          Außerdem habe ich bei der Recherche für unseren Wikibeitrag festgestellt, dass sich die Browser durchaus unterschiedlich verh[a|ie]lten, in Abhängigkeit davon

          • ob sich das input-Element in einem Formular befindet
          • ob dieses einen submit-Button hat

          Für textarea-Elemente gibt es weder pattern noch minlength Du kannst es in dem Fall ohne JavaScript nicht clientseitig validieren.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Elfen und Elfenbein.

          1. @@Matthias Apsel:

            nuqneH

            Glauben ist zwar nicht wissen, aber das glaube ich nicht. Ich glaube eher, du machst etwas falsch.

            Hm, glaub ich nicht. Ich glaub eher, die Browser machen etwas falsch.

            Spec sagt: „Constraint validation: If an element has a minimum allowed value length, its value is not the empty string, and the code-unit length of the element's value is less than the element's minimum allowed value length, then the element is suffering from being too short.“

            AFAIS sollte ein Forumlar nicht abgeschickt werden, wenn irgendein Element darin „suffering“ ist.

            Sowohl Chrome als auch Firefox schicken’s im Fall von Nichteinhaltung von min-length (bzw. max-length) dennoch ab. Es sei denn, ich mach auch etwas falsch.

            Für textarea-Elemente gibt es weder pattern noch minlength

            Doch, min-length gibt es. [PR, ED]

            Qapla'

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
            1. Om nah hoo pez nyeetz, Gunnar Bittersmann!

              Sowohl Chrome als auch Firefox schicken’s im Fall von Nichteinhaltung von min-length (bzw. max-length) dennoch ab. Es sei denn, ich mach auch etwas falsch.
              […]
              Doch, min-length gibt es. [PR, ED]

              Zumindest ohne Minus^WBindestrich ;-)

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Bucht und Buchtitel.

              1. @@Matthias Apsel:

                nuqneH

                Sowohl Chrome als auch Firefox schicken’s im Fall von Nichteinhaltung von min-length (bzw. max-length) dennoch ab. Es sei denn, ich mach auch etwas falsch.
                […]
                Doch, min-length gibt es. [PR, ED]

                Zumindest ohne Minus^WBindestrich ;-)

                Jaja, wer lesen kann …

                Aber auch bei richtiger Schreibweise des Attributs schicken Chrome und Firefox das Formular auch mit „suffering“-Element ab.

                Qapla'

                --
                „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          2. Für textarea-Elemente gibt es weder pattern noch minlength Du kannst es in dem Fall ohne JavaScript nicht clientseitig validieren.

            .. was, wie er aus gutem Grund schon selbst erkannt hat, sowieso nicht seine Frage war und, unabhängig davon, so, wie es leider meist durchgeführt wird, auch überflüssig da ohne zusätzlichen Nutzen ist (Hervorhebung _nach_ dem Absenden des Formulars oder, schlimmer noch, Aufruf von alert(), so dass der Hinweis völlig losgelöst ist von dem Feld, das das Problem verursacht).

  2. Tach!

    ich bin PHP Neuling und hätte eine kleine Frage, ist es möglich dass ich prüfe wie viele Zeichen ein User ein eine Textbox geschrieben hat? Es müssen mindestens 100 Zeichen sind.

    In jeder (gebräuchlichen) Programmiersprache gibt es Stringverarbeitungsfunktionen, darunter auch eine, die die Länge ermitteln kann. PHP hat nur die Besonderheit, dass es (immer noch) nicht UTF-8-tauglich ist. Es bringt aber für Strings die mb-Extension (mb = Multibyte) mit. Wenn du also UTF-8 verarbeitest, müsstest du diese Funktionen nehmen.

    dedlfix.

    1. hi,

      [..] PHP hat nur die Besonderheit, dass es (immer noch) nicht UTF-8-tauglich ist.

      Selber tauglich machen. Mit den Mitteln, die _jetzt_ zur Verfügung stehen, kann auch PHP sehr wohl mit UTF-8 umgehen.

      Das ist wie beim Fotografieren: Nicht die Kamera macht schlechte Bilder, sondern der Fotograf ;)

      MfG

      1. Meine Herren!

        [..] PHP hat nur die Besonderheit, dass es (immer noch) nicht UTF-8-tauglich ist.

        Selber tauglich machen. Mit den Mitteln, die _jetzt_ zur Verfügung stehen, kann auch PHP sehr wohl mit UTF-8 umgehen.

        Wenn ich deine Klasse richtig verstehe, dann kann sie aus gegebenen Codepoints die UTF8-Repräsentation berechnen und umgekehrt.

        Das löst aber nicht im geringsten die massiven Probleme, die PHP mit Unicode hat: eine ganze PHP Version ist an der Unicode-Unterstützung gescheitert, die nächste Major-Version wird deshalb nicht PHP 6, sondern PHP 7 heißen. Die Historie kann man im PHP-Entwickler-Wiki nachlesen. Dort findet man auch einen guten Einstieg in die Problematik und welche Facetten alles betroffen sind: https://wiki.php.net/ideas/php6#unicode_support (Der Artikel ist noch nicht an den Versionssprung von 5 auf 7 angepasst worden)

        Das ist wie beim Fotografieren: Nicht die Kamera macht schlechte Bilder, sondern der Fotograf ;)

        In dieser Analogie muss PHP der Fotograf sein ;))

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. hi,

          Selber tauglich machen. Mit den Mitteln, die _jetzt_ zur Verfügung stehen, kann auch PHP sehr wohl mit UTF-8 umgehen.

          Wenn ich deine Klasse richtig verstehe, dann kann sie aus gegebenen Codepoints die UTF8-Repräsentation berechnen und umgekehrt.

          Oder auch die Anzahl der Zeichen aus einer gegebenen Folge von Bytes (Rohdaten), die Anzahl der Zeichen ist gleich der Anzahl der Codepoints ;)

          Das löst aber nicht im geringsten die massiven Probleme, die PHP mit Unicode hat [..]

          Ach das war/ist in Perl genauso: In Sachen Unicode gab es viele Änderungen von 5.6.1 bis heute. Der Unterschied zu PHP ist nur der, dass im Zuge der Versionsfortschritte diesbezügliche Aufwendungen zum Ändern von Code geringfügig sind und die Abwärtskompatibilität in den meisten Fällen gegeben ist. Entscheidende und zukunftsweisende Änderungen wurden mit Perl 5.8 eingeführt, u.a. ist das Modul Encode.pm in den Core aufgenommen worden.

          Das ist wie beim Fotografieren: Nicht die Kamera macht schlechte Bilder, sondern der Fotograf ;)

          In dieser Analogie muss PHP der Fotograf sein ;))

          Ja, da ist was dran: In PHP gibt es einfach zuviele Built-in-Funktionen, in Perl sind es so um die hundert, guckma und das ist relativ isobar ;)

          So kann ein Perl-Programmierer selbst entscheiden, ob er weiterhin byte-orientiert arbeitet oder den Komfort kodierter Zeichenketten nutzt (bringt viele Vorteile in Verbindung mit Datenbanken, die das ebenfalls unterstützen, Stichwort Kollation) oder ob er in einer einzigen Anwendung zwischen Bytesemantic und Charactersemantic je nach Anforderung umschaltet. Ob Letzteres auch in PHP möglich ist... Hmm.

          Horst Heizer

          --
          Kleine Schweinchen sterben nicht in kalten Wintern sondern in kalten Ställen (Bauernregel).
    2. @@dedlfix:

      nuqneH

      In jeder (gebräuchlichen) Programmiersprache gibt es Stringverarbeitungsfunktionen, darunter auch eine, die die Länge ermitteln kann. PHP hat nur die Besonderheit, dass es (immer noch) nicht UTF-8-tauglich ist. Es bringt aber für Strings die mb-Extension (mb = Multibyte) mit. Wenn du also UTF-8 verarbeitest, müsstest du diese Funktionen nehmen.

      Ich würde es andersrum ausdrücken: mb-Funktionen *sind* Stringverarbeitungsfunktionen, alles ohne mb am Anfang sind *keine* – auch wenn sie als solche aufgeführt werden. (Oder sich als solche aufführen.)

      Ich bin übrigens positiv erstaunt, dass mb_strlen('💩', 'UTF-8') tatsächlich 1 liefert und nicht 2. Da kommt JavaScript erst noch hin.

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. hi,

        Ich bin übrigens positiv erstaunt, dass mb_strlen('💩', 'UTF-8') tatsächlich 1 liefert und nicht 2. Da kommt JavaScript erst noch hin.

        Das Zeichen heißt 'PILE OF POO'
        Ohh, Ohh, oo, 00 ;)

        SCNR;)