Tunnel85: strlen aus Zahlen String

Hallo zusammen...
muss Euch mal am "heiligen" Sonntag stören...
Und zwar baue ich gerade für einen Adminberreich ein Formular in dem News eingetragen werden können.

Dort habe ich auch Eingabefelder für tag(tt) monat(mm) jahr (jjjj)

Jetzt wollte ich mit der folgenenden Überprüfung vermeiden, dass weniger als die  erforderlichen Zeichen eingegeben werde, da ich sie nachher mit strtotime in einen timestamp umwandel, der dann das Ablaufdatum der News sein soll.

code:

if((empty($_POST['jahr'])) OR (strlen($_POST['jahr'] != 4))){
  $allesok = 0;
  $error['jahr'] = '<span style="background:yellow">Kontrollieren</span>';
  $errorcss['jahr'] = ' class="pflicht"';}

Wenn ich jetzt in das Eingabefeld 4 eingebe, sollte er ja einen Fehler melden, machte er aber nicht, da er anscheinend dann den Wert der Eingabe nimmt. Bei allen anderen Zahlen klappt es(1-3 & 5-9999)

Wie kann ich dieses umgehen???
Danke für Eure Hilfe, und noch einen schönen Sonntag und viel Spaß beim Em-schauen.

Tunnel

  1. Hello,

    (strlen($_POST['jahr'] != 4))){

    ...da würde ich mir die Klammerung nochmal genau anschauen...

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    We found ourselves looking upon a familiar sight. We were home. How do you pick up the threads of an old life? How do you go on... when in your heart you begin to understand... there is no going back? There are somethings that time cannot mend... some hurts that go too deep... that have taken hold.  --  The Lord of the Rings: The Return of the King (Peter Jackson)
    1. Hello,

      (strlen($_POST['jahr'] != 4))){
      ...da würde ich mir die Klammerung nochmal genau anschauen...

      MfG
      Rouven

      OOps....
      Danke Dir... Hatte wohl gerade nen mächtigen Wald vor Augen...

      1. @Tom

        Danke für Deine Vorschläge, die Überprüfung mit checkdate() habe ich schon, die kommt aber erst später, wenn ich die Strings zusammengefügt habe. *logischerweise*

        Eine Überprüfung der übergebenen variablen habe ich sowieso als erstes, sonst geht er in diesen if-zweig nicht rein.

        Das mit dem Übersicht und bestätigen werde ich mir nochmal überlegen, allerdings können die jeweiligen admins auch jederzeit die news ändern, und bekommen nach eintragung auch sofort den Eintrag nochmal angezeigt.

        Die wertbereiche werde ich überprüfen, das war mir noch gar nicht in den sinn gekommen...

        Danke auf jedenfall das Ihr euch nen bißchen Zeit genommen habt.

  2. Hello,

    ich würde da eher den zulässigen Wertebereich prüfen.

    Eine Prüfung, ob alle Pflichtfelder des Formulares zurückgekommen sind, aber auch nicht mehr Parameter gepostet wurden, als zulässig sind und ob z.B. nicht gesetzte Checkboxen oder Radios ergänzt werden müssen, würde ich sowieso generell am Anfang des Scriptes im Bereich "Datenübernahme" machen.

    Wenn Du dann also den groben erlaubten Wertebereich geprüft hast

    Einträge mit intval() behandeln.

    - Tag zwischen 1 und 31
     - Monat zwischen 1 und 12
     - Jahr zwischen X und Y

    kannst Du mit checkdate() noch prüfen, ob das Datum plausibel ist.
    http://de2.php.net/manual/de/function.checkdate.php

    Und das Ergebnis würde ich meinem Poster ja ohnehin zur Sichtkontrolle nochmals vorlegen, bevor er entweder mittels "OK, absenden" oder "korrigieren" oder "abbrechen" weiter macht.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de