move_uploaded_file
Verschiebt eine hochgeladene Datei an einen neuen Ort
Beschreibung
bool move_uploaded_file
( string $filename
, string $destination
)
Diese Art der Prüfung ist besonders wichtig, wo irgendeine Aktion mit
hochgeladenen Dateien deren Inhalt dem User zugänglich machen könnte,
oder gar anderen Usern auf dem selben System.
Parameter-Liste
-
filename
-
Der Dateiname der hochgeladenen Datei.
-
destination
-
Das Ziel der zu verschiebenden Datei.
Rückgabewerte
Gibt bei Erfolg TRUE zurück.
Ist filename keine gültige Datei, wird keine Aktion
ausgeführt, und move_uploaded_file gibt FALSE zurück.
Ist filename eine gültige Datei, jedoch
aus irgendeinem Grund nicht verschoben werden kann, wird keine
Aktion ausgeführt, und move_uploaded_file
gibt FALSE zurück. Zusätzlich wird eine Warnung
ausgegeben.
Beispiele
Beispiel #1 Hochladen mehrerer Dateien
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() kann Directory-Traversal-Angriffe verhindern;
// weitere Validierung/Bereinigung des Dateinamens kann angebracht sein
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
Anmerkungen
Hinweis:
move_uploaded_file berücksichtigt sowohl Safe Mode wie
auch open_basedir. Allerdings werden
die Beschränkungen nur auf den destination Pfad
angewandt, um das Verschieben von hochgeladenen Dateien zu erlauben, bei
denen sich filename mit den Beschränkungen im
Konflikt befinden könnte. move_uploaded_file
gewährleistet die Sicherheit dieser Operation dadurch, dass nur diejenigen
Dateien verschoben werden dürfen, die mit PHP hochgeladen wurden.
Warnung
Existiert die Zieldatei bereits, wird sie überschrieben.