strlen aus Zahlen String
Tunnel85
- php
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
Hello,
(strlen($_POST['jahr'] != 4))){
...da würde ich mir die Klammerung nochmal genau anschauen...
MfG
Rouven
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...
@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.
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