Brei Geschrieben 13. März 2005 Geschrieben 13. März 2005 Hallo, wie kann ich eine eingabe pruefen ob es im Format YYYY-MM-YY eingegeben wurde? Da ich mit Regulären Ausdrücken auf Kriegsfuß stehe, möchte ich sie nicht verwenden. Kann ich da evtl die Funktion strtotime() zweckentfremden oder gibts ne bessere Lösung? Zitieren
kills Geschrieben 14. März 2005 Geschrieben 14. März 2005 meiner Meinung nach, wäre es mit einem RegEx am besten/schnellsten getan... Gruß, Markus Zitieren
SNOWMAN Geschrieben 14. März 2005 Geschrieben 14. März 2005 Nunja, kills hat ja eigentlich recht... aber du kannst RegEx mehr oder weniger auf einer anderen "einfacheren" art schreiben: mit split() Du lässt das Datum als String eingeben und splitest es an den "-". Sollte einer der drei neuen Strings leer sein ->Ausgabe"Fehler" Ansonsten kannst du über ne If (bereichs)abfrage checken ob die werte passen: Pseudocode (orientiert an PHP): if ($year > 2050 && $year < 1950){ ausgabe"fehler" } if ($month = 1 || $month = 3 || month = 5 || ...){ #Monate mit 31 Tagen, bitte macht was schöneres draus if($day < 1 || $day > 31){ Ausgabe"Fehler"; } #und so weiter } [/php] Zitieren
kLeiner_HobBes Geschrieben 14. März 2005 Geschrieben 14. März 2005 Problem bei SNOWMANs Ansatz sind dann noch die Schaltjahre Ich würde am ehesten die strtotime()-Funktion verwenden: if (strtotime($mein_datum) != -1) ... [/PHP] Zitieren
Brei Geschrieben 14. März 2005 Autor Geschrieben 14. März 2005 hmm, naja dann probier ich mal regexp. Ihr werdet mir schon helfen :-) Zitieren
forTeesSake Geschrieben 14. März 2005 Geschrieben 14. März 2005 nur mal ein kleiner einschub. mein chef hat mich vor kurzen auf eine ganz coole idee gebracht. wir entwickelten ein cms für einen kunden und haben dort beschlossen datums und uhrzeiten in jedem erdenklichen foormat zuzulassen. natürlich erfordert das ein bisschen js bzw php checking, aber im edneffekt war unser kunde total begeistert und wunderte sich dass er datums und uhrzeiten so eingeben kann wie er will und nicht immer fehlermedlungen alls (bitte das datum im format tt-mm-jjj) eingeben. er kann nun z.b. für das datum 01.01.2005 folgende formate eingeben 1.1.5 01.1.05 1.01.2005 1.1.005 01.01.2005 (natürlich ) ... bei uhrzeiten kann er z.b. für 00.30 0.30 00:30 0:30 00.30 für 00:03 0.3 0:3 00:3 00.3 etc. find ich einfach sehr cool ansonsteon viel erfolg bei der lösung deines probs, ich denke auch, dass die regEx lösung wohl die beste sein wird wenn du ein gewisses format vorgibst. Zitieren
Jaraz Geschrieben 14. März 2005 Geschrieben 14. März 2005 er kann nun z.b. für das datum 01.01.2005 folgende formate eingeben 1.1.5 01.1.05 1.1.005 01.01.2005 (natürlich ) Ja klar, man muss ja auch an den Umsatz in der Zukunft denken, hat ja schonmal geklappt. etc. find ich einfach sehr cool ansonsteon viel erfolg bei der lösung deines probs, ich denke auch, dass die regEx lösung wohl die beste sein wird wenn du ein gewisses format vorgibst. Nein! dafür gibt es checkdate http://de.php.net/checkdate Gruß Jaraz Zitieren
SNOWMAN Geschrieben 14. März 2005 Geschrieben 14. März 2005 hey, als kleiner vorschlag zur "stabilisierung" deines Skripts: Mach anstelle von Eingabefeldern "Dropdownlisten" so KANN man garnichts falsches eingeben Zitieren
Brei Geschrieben 14. März 2005 Autor Geschrieben 14. März 2005 also nach allem hin und her denke ich, dass ich es so mache: Je ein Textfeld fuer Tag, Monat, Jahr dann mach ich checkdate(). Das mit Dropdown: Wenn der User klug genug ist schon, aber er kann ja dann auch den 31. April eingeben, was nicht so doll wäre. Also so funktionierts sehr gut: if(@checkdate($_POST["beginn_monat"],$_POST["beginn_tag"],$_POST["beginn_jahr"]) && @checkdate($_POST["ende_monat"],$_POST["ende_tag"],$_POST["ende_jahr"])) Zitieren
SNOWMAN Geschrieben 14. März 2005 Geschrieben 14. März 2005 hmm... du kannst ja die auswahlmöglichkeiten abhängig der wahl machen. als erstes muss er das jahr auswählen, dann wird der monat freigegeben, nach auswahl dieses wird anhand des ausgewählten Monats die Tagesanzahl bestimmt, isses Februar wird aufs jahr geuckt ob 28 oder 29. und wenn die anzahl der tage festgelegt sind wird das feld für die tage freigegeben. erfordert n bisschen aufwand aber so ist es zu 100% sichergestellt das der user nix falsches eingibt, kann er ja auch garnet Zitieren
Jaraz Geschrieben 14. März 2005 Geschrieben 14. März 2005 Hi, egal ob man per Javascript irgendwas freischaltet, kritische Daten müssen immer auf den Server überprüft werden. Ich kann Formulare auch ohne das entsprechende Formular abschicken und wilde Werte, bis zu SQL Injection Strings übermitteln, egal ob es sich um eine Checkbox, select-box mit Zahlen oder was auch immer handelt. Gruß Jaraz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.