Yadgar: Problem mit Überprüfung von Formulardaten

Beitrag lesen

if ($DauerMinuten && (!is_integer($DauerMinuten) || $DauerMinuten < 0 || $DauerMinuten > 255))
{
  echo "Bitte geben Sie eine Zahl zwischen 0 und 255 ein.<br>"
}


> >   
> > Merkwürdigerweise wird aber jetzt \*jede\* Eingabe, auch solche mit korrekten Minutenwerten, abgefangen - warum?  
>   
> Nicht Merkwürdigerweise, es tut das was du ihm gesagt hast. Lies dir das doch mal Laut vor, dann merkst du den unterschied zwischen deiner Vorstellung und dem was du geschrieben hast.  
  
Ich kann da keinen Fehler finden, tut mir leid... ein Wert von z. B. 45 wäre nicht leer (erste Bedingung erfüllt), nicht Nicht-Integer, aber gleichzeitig weder kleiner als 0 noch größer als 255 - Bedingung in der inneren Klammer NICHT erfüllt - also sollte der Codeblock übersprungen werden! Habe ich eventuell Prioritäten von Operatoren nicht beachtet? && hat doch eine höhere Priorität als || und ! bindet nicht den ganzen Term in der Klammer...  
  
...oder bin ich wirklich zu dumm zum Programmieren und sollte vorsichtshalber schon mal ein Ticket auf einer Zeitmaschine nach [ZENSIERT] buchen?