PHP 4.3

11.2.2 Datei-Upload: Variablenspezifikationen

Nach der erfolgreichen Übertragung einer Datei stellt PHP in dem vordefinierten Array $HTTP_POST_FILES die charakteristischen Merkmale der übertragenen Datei zusammen. Es handelt sich um ein zweidimensionales Array, in dem alle wichtigen Informationen über die übertragene Datei enthalten sind. Genau wie bei den beiden bekannten Formulardaten-Arrays $HTTP_GET_VARS und $HTTP_POST_VARS, greifen Sie in $HTTP_POST_FILES mit Hilfe des Formularfeldnamens, also z.B. "userfile", auf die einzelnen Einträge zu. Im Folgenden werden alle erzeugten Einträge erläutert:


$HTTP_POST_FILES["userfile"]["tmp_name"]

Enthält den temporären Namen, mit dem die Datei auf dem Server abgelegt wird. Temporäre Dateinamen werden vom System erzeugt und werden daher nicht dem ursprünglichen Namen entsprechen.

Wichtig: Der Wert von $HTTP_POST_FILES["userfile"]["tmp_name"] ist der leere String, wenn keine oder eine zu große Datei übertragen wurde!

$HTTP_POST_FILES["userfile"]["name"] Der ursprüngliche Name der Datei auf dem System des Anwenders ohne Angabe des Quellpfades.
$HTTP_POST_FILES["userfile"]["size"] Enthält die Größe der Datei in Bytes.
$HTTP_POST_FILES["userfile"]["type"] Enthält den MIME-Typ der Datei, sofern der Browser diese Information mitgeteilt hat. Beispiele dafür sind "image/gif" oder "text/html".

Die Variable $HTTP_POST_FILES["userfile"]["tmp_name"] erweist sich leider nicht immer als absolut sicher. Sie können zur Sicherheit nach jedem Upload mit der Funktion is_uploaded_file() (liefert true oder false zurück) überprüfen, ob tatsächlich eine Datei auf den Server übertragen wurde.

Skriptfragment zum Prüfen des Datei-Upload-Erfolges
<?php

  if (is_uploaded_file($HTTP_POST_FILES["userfile"]["tmp_name"])) {
    // ... Anweisungen, wenn Upload erfolgreich
  } else {
    // ... Anweisungen, wenn Upload nicht erfolgreich
  }

?>

Zugriffsrechte

Vergewissern Sie sich, dass Ihre Skripte bei der Ausführung über die notwendige Schreibberechtigung verfügen, bevor Sie die Upload-Funktionalität zum Einsatz kommen lassen. Beachten Sie aber, dass die Einrichtung eines anonymen Schreibzugriffs Sicherheitsrisiken implizieren kann. Daher müssen alle Eingaben, insbesondere auch Dateinamen, sorgfältig überprüft werden. Eine vollständige Diskussion dieser Problematik würde jedoch im Rahmen dieser Lerneinheit nicht geliefert werden.
Weitere Informationen zum Thema Sicherheitsstrategien bieten wir Ihnen in der letzten Lerneinheit.

Kommentare (0)

Ihr Kommentar

Name