Ordnerinhalt zum Download anbieten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ordnerinhalt zum Download anbieten

    Hallo,

    ich habe meine ersten Versuche mit PHP gemacht und habe jetzt ein paar kleine Probleme.
    Ich möchte folgenden Code benutzen, um einen Ordner auszulesen und den Inhalt zum download verfügbar machen.

    PHP-Code:
    <html>
    <body>
    <?php
        $downpath 
    'e:/download';
        
    $filetype 'txt'
        
    if (isset($path) == false$path $downpath;

        if (empty(
    $download)&& empty($directory))
        {
            
    auflisten($path);
        }
        else
        {
            if (empty(
    $directory) == falsedirectory($path$directory$downpath);
            if (empty(
    $download) == falsedownload($path$download);
        }
        
        function 
    auflisten($path)
        {
            echo 
    "<a href=\"$PHP_SELF?directory=root\">Download-Übersicht</a><br>";
            echo 
    "<a href=\"$PHP_SELF?directory=..\">..</a><br><br><br>";
            
    $handle opendir($path);
            while (
    false !== ($file readdir($handle)))
            {
                
    //Datei & Endung
                
    if (is_file($path."/".$file) && substr(strrchr($file,'.'),1) == $filetype
    echo 
    "<a href=\"$PHP_SELF?download=$file\">$file</a><br>";
                
    //Ordner & nicht .. oder .
                
    if (is_dir($path."/".$file) && $file <> '..' && $file <> '.'
    echo 
    "<a href=\"$PHP_SELF?directory=$file\">$file</a><br>";
            }
            
    closedir($handle);
        }
        
        function 
    directory($path$directory$downpath)
        {
            
    //wenn Leerzeichen in Pfad, dann Fehler
            
    if ($directory == "..")
            {
                
    //3. Problem
                //Warum Pfadänderung ?
                
    auflisten($path);
            }
            else if (
    $directory == "root")
            {
                
    $path $downpath;
                
    auflisten($path);
            }
            else
            {
                
    $path $path."/".$directory;
                
    auflisten($path);
            }
        }
        
        function 
    download($path$download)
        {
            
    //1. Problem
            //Wenn Download, dann wird Pfad ($path) auf $downpath zurückgesetzt

            //2. Problem
            //Download = $path."/".$download

            
    auflisten($path);
        }
    ?>
    </body>
    </html>
    Die Probleme (siehe Kommentare):

    1. Wenn ich den Link einer Datein anklicke, wechselt die Übersicht immer in den Ordner, welcher in $downpath gespeichert ist.
    2. Wie kann ich dem Browser eine Datei mit dem Link $path."/".$download zum Download anbieten?
    3. Wieso wird bei einem Klick auf .. der Pfad automatisch eine Ebene höher gesetzt, jedoch nur bis $downpath, ohne dass $path bearbeitet wird
    4. Wie kann ich Pfade mit Leerzeichen auslesen?

    Danke
    EDIT:
    line break sponsored by asp2php. Bitte zukünftig selbst dafür sorgen,
    dass man beim lesen nicht scrollen muss

    Zuletzt geändert von asp2php; 13.09.2004, 09:53.

  • #2
    durch
    PHP-Code:
    if (isset($path) == false$path $downpath
    ist $path immer gleich $downpath, da du nirgends sonst $path definierst (zu mindest nicht in deinem geposteten Code).

    Ausserdem bitte den Umgang mit Booleanvariable und Booleanfunktionsrückgabe richtig lernen. Du musst nicht ==false oder ==true prüfen, einfach if (isset($var)) reicht völlig aus. Und $_GET bzw. $_POST zur Abfrage von URL-Variable bzw. Formular-Variable einsetzen wäre von Vorteil.

    Kommentar


    • #3
      Erst einmal danke.
      Wie gesagt, ist das erst mein zweiter Versuch mit PHP

      Da ich mir schon dachte, dass $path immer wieder mit $downpath "überschrieben" wird, wollte ich mit isset eigentlich erreichen, dass $path=$downpath nur beim initialisieren des Skripts ausgeführt werden soll.
      Versändnisfehler meinerseits?

      PHP-Code:
      if (isset($path) == false$path $downpath
      bedeutet doch:
      Wenn $path nicht gesetzt, dann $path=$downpath sonst nichts ausführen.

      Kommentar


      • #4
        ja, aaabeeer du hast $path auch nirgends explizit definiert, etwa als URL-Var oder sonst wie, daher liefert isset($path) immer false.

        Kommentar

        Lädt...
        X