Tom: Upload Script mit Dropdown Ordnerauswahl

Beitrag lesen

Hello,

$extensions = array(".jpg", ".gif"); // Erlaubte Erweiterungen

if(in_array($ext, $extensions))
{
  if($size<=$maxsize && $size!=0)
  {
    while(file_exists($uploddir.$newname) || !$newname)
    {
      $newname = md5(uniqid(rand()));
    }

Hier können im Prinzip alle Dateitypen hochgeladen werden.
Die Dateiendung besagt gar nichts.

Der einzige Check, der sinnvoll wäre, wäre eine Untersuchung auf den MIME-Type auf dem Server.
Das geht nur mit einer vernünftigen Nachschaufunktion, die allerdings in neueren PHP-Versionen nur noch im PEAR-Paket enthalten ist. Die Kontrolle von $_FILES['bild']['type'] nützt auch nichts, da die Angaben vom Client kommen.

$HTTP_POST_FILES solltest Du auch nicht mehr benutzen, weil diese Globalen Arrays auch abgeschafft oder zumindest üblicherweise abgeschaltet werden seit PHP 5.

http://www.php.net/manual/en/ini.core.php#ini.register-long-arrays
Stattdessen werden die "superglobalen Arrays" verwendet.

Als erstes solltest Du Dir nach dem Upload den Error-Wert ansehen

if ($_FILES[$formular_filename]['error'] === 0)
  {

}

dann wurde genau ein File fehlerfrei hochgeladen

Bezüglich der Ünersicht der Zieverzeichniss und einer Zielauswahl daraus, müsstest Du mehrere "Submitbuttons" aufbauen. Diese bestehen im Prinzip aus der Grafik, die Du für das Ziel gezeichnet/ausgesucht hast. Schau ins SelfHTML rein, wie das geht.

http://de.selfhtml.org/html/formulare/klickbuttons.htm

Denen gibst Du dann einen Namen, den Du im $_POST-Array nachher auch wiederfindest.
Diesen Namen musst Du dann erst übersetzen in den eigentlichen Pfad, wenn Du die Sicherheit Deines Servers nicht gefährden willst.

Entwewder, Du arbeitest mit eienr Session, in der Du Dir die erlaubten Pfade merkst und ihnen einen Button-Namen zuweist, oder Du musst jedes Mal den übertragenen Pfadnamen prüfen, ob er in der Liste der erlaubten Pfade enthalten ist. Sonst könnte man Dir die Dateien überall abspeichern, wo PHP schreiben darf.

Zum Auslesen der Zielverzeichnisse gibt es

glob()     http://www.php.net/manual/en/function.glob.php

und

readdir()  http://www.php.net/manual/en/function.readdir.php

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau