stareagle: OR funktioniert nicht

Beitrag lesen

elseif ($_FILES['File']['type'] != "application/msword" || $_FILES['File']['type'] != "application/force-download" || $_FILES['File']['type'] != "application/" || $_FILES['File']['type'] != "plain/text") {
  $fehler = true;
  $red4 = true;
  $fehlertext .= "Du kannst nur Dateien mit den Endungen .doc, .txt, .rar, und .zip hochladen.<br>\n";
  }


>   
> Mein Problem ist, dass das OR (||) nicht funktioniert. Immer wenn ich eine eigentlich richtige Datei hochlade wird eine Fehlermeldung angezeigt. Wenn ich jedoch z.B. $\_FILES['File']['type'] != "application/force-download" allein stehen lasse geht es.  
  
Du hast einen Denkfehler drin. Die Fehlermeldung soll angezeigt werden, wenn ALLE Bedingungen erfüllt sind. Ergo: Ersetze dass oder durch und (&&), und es wird funktionieren.  
  
Konkret gesehen passiert folgendes bei der Auswertung deines Ausdrucks. Zuerst werden die Vergleiche durchgeführt. Diese können entweder wahr (1) oder falsch (0) sein. Dann werden diese boolschen Werte durch den jeweiligen Operator verknüpft.  
  
Beispiel: Jemand versucht eine Power-Point-Datei hochzuladen (PPT). Dann sind alle Vergleiche wahr (1).  
  
Versucht jemand dagegen eine Word-Datei hochzuladen: Dann ist der erste Vergleich Falsch (0), die anderen wahr.  
  
Die Wahrheitstabellen für das boolsche AND sieht wie folgt aus:  
  
A B  
0 0 0  
0 1 0  
1 0 0  
1 1 0  
  
Die Wahrheitstabelle für OR sieht wie folgt aus:  
  
A B  
0 0 0  
0 1 1  
1 0 1  
1 1 0  
  
Hoffe es ist jetzt klarer, warum du AND verwenden musst.  
  
Gruß  
  
Stareagle