Auge: Prüfen ob Upload Feld leer ist

Beitrag lesen

Hallo

warum muss ich denn auf $_FILES['uploadDatei']['error'] !== 0 überprüfen? Was steht da drin?

Im Kontext von …

if (isset($_FILES['uploadDatei']['error']) && $_FILES['uploadDatei']['error'] !== 0)

… erfolgt zuerst die Prüfung, ob $_FILES['uploadDatei']['error'] existiert, was, wie dein eigener Test zeigt, auch dann der Fall ist, wenn du das Feld leer gelassen hast, wobei hier der Wert „4“ ausgegeben wird.

Das Feld ['error'] wird aber auch bei einem erfolgreichen Upload erzeugt und hat dann den Wert „0“ (bzw. als Konstante den Wert „UPLOAD_ERR_OK“). Eine Auflistung der möglichen Statuscodes hindest du im Handbuch.

Da eine Fehlerbehandlung nur dann ausgeführt werden soll, wenn auch ein Fehler aufgetreten ist, musst du nicht nur die Existenz des Feldes ['error'] prüfen, sondern auch, ob sich der tatsächliche Wert von „0“ (kein Fehler) unterscheidet.

Meine User dürfen ALLES hochladen!

Wenn sie wirklich alles hochladen dürfen, dürfen sie z.B. auch PHP-Skripte hochladen, die Schadcode beïnhalten. Denke über sinnvolle Einschränkungen für alles nach.

Tschö, Auge

--
Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
Terry Pratchett, „Gevatter Tod“