Wochenend ohne Sonnenschein: Alle Dateitypen werden geladen, trotz ' if ' ?

Beitrag lesen

Hallo.

Auch 'size' ist ohne Funktion ?

if($_FILES['upfile']['size']>500000)         /*Größe anpassen*/ {

{$fehler.="<center><br>Die Datei ist leider zu groß!;";}

Du solltest deinen leicht chaotischen Programmierstil etwas auflockern, ich finde ihn reichlich unübersichtlich. Als Beispiel für ein bewährtes Format: http://httpd.apache.org/dev/styleguide.html.

Ob es nun tatsächlich daran liegt, dass du in diesem zusammengequetschten Wust mit den Klammern durcheinander gekommen bist, oder dies ein Zitierfehler ist, musst du selbst wissen. Die if-Bedingung selbst sieht jedenfalls in Ordnung aus; bei solchen unerklärlichen Verzweigungen ist es aber immer eine sehr große Hilfe, sich direkt vor der fraglichen Bedingung die beteiligten Variablen ausgeben zu lassen:

var_dump($_FILES['upfile']['size']);
  if ($_FILES['upfile']['size'] > 500000) {
      blafasel;

Warum werden auch alle anderen Dateitypen geladen (txt, pdf, etc.)?

Schau dir deine Bedingung an (ich ziehe das mal etwas auseinander):

if (! (
         ($_FILES['upfile']['type'] == 'image/jpeg')
         && ($_FILES['upfile']['type'] == 'image/gif')
         && ($_FILES['upfile']['type'] == 'image/png')
        )
     )

Fällt dir an der inneren Klammer etwas auf? Kann das Feld 'type' "image/jpeg und image/gif und image/png" sein?