+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Directory Listing via PHP

  1. #1
    Verbringt hier viel Zeit Avatar von Speedy8
    Registriert seit
    18.05.2005
    Beiträge
    855
    Bedankte sich
    12
    Erhielt 124 Danksagungen
    in 122 Beiträgen

    Standard Directory Listing via PHP

    Hallo,

    zunächst möchte ich sagen, dass ich hier alle Themenbereiche angesehen habe, aber mit meiner folgenden Frage passe ich nicht wirklich irgendwo 100%ig hinein. Vielleicht wäre es ja eine Anregung, einen allgemeinen Threat aufzumachen zu allgemeinen PHP-Fragen? Sicherlich ist das hier das Mambo/Joomla-Forum. Aber die eine oder andere allgemeine PHP-Fragestellung kommt ja trotzdem.

    Nun zu meiner Frage. Ich habe auf meinem Webspace ein Verzeichnis eingerichtet, in dem ich passwortgeschützt Dateien ablegen möchte. Nun sollen auf dieses Verzeichnis gelinkte Personen zunächst den Inhalt des Verzeichnisses lesen können (am schönsten wäre auch durch-Browsen) und durch einen Klick auf die Datei selbige runterladen. Nun dürfte das eigentlich kein Thema sein, wenn auf dem Server das DirectoryListing aktiviert ist. Das habe ich für meinen Space getan ... aber es tut sich nix. Ich bekomme eine allgemeine Fehlerseite des Servers, aber nicht den Directory-Inhalt.
    Jetzt habe ich mir gedacht, dass man das ja auch mit PHP lösen kann, also zumindest die Anzeige des Verzeichnisinhalts und durch entsprechende URLs auch die Ermöglichung des Downloads.

    Folgendes Script habe ich mir im Netz gesucht ... weiss aber nicht, wie ich bei der Darstellung der Dateien entsprechend die a href-Syntax unterkriege. Ich füge mal mein Script an und würde mich freuen, wenn mir von euch jemand eine Antwort geben könnte. Danke!

    PHP-Code:
    <html><head><title> Directory</title></head><body><table width="193" height="87" border="1">
    <?php
    function showdir ($path)
    {
        echo 
    "<tr><th colspan=10 align=left> Inhalt von Verzeichnis "$path"</th></tr>""\n";
        
    //einlesen
        
    $dirs $files = array();
        
    $dir opendir ($path);
        while (
    $entry readdir($dir))
        if (
    is_dir($entry))
            
    $dirs []= $entry;
        else 
            
    $files []= $entry;
        
    fclose ($dir);
        
    //anzeigen
        
    sort ($dirs);
        for (
    $i=0$i<count($dirs); $i++)
            echo 
    "<tr><td>"$dirs[$i], "</td><td>&lt;DIR&gt;</td></tr>""\n";
        
    sort ($files);
        for (
    $i=0$i<count($files); $i++)
            echo 
    "<tr><td>"$files[$i], "</td><td align=right>"filesize ($files[$i]), "</td></tr>""\n";
    }
    showdir ('.');
    ?>
    </table></body></html>
    Mfg
    Alex

  2. #2
    Neu an Board
    Registriert seit
    30.01.2006
    Beiträge
    2
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard

    Also, ich habe mal ein wenig am Code rumgebastelt und rausbekommen, was du möchtest (denke ich zumindest )

    PHP-Code:
    <html>
        <head>
            <title>
                Directory
            </title>
        </head>
        <body>
            <table height="87" border="1">
                <?php
                
    function showdir ($path)
                {
                    echo 
    '
                        <tr>
                            <th colspan=10 align=left>
                                Inhalt von Verzeichnis ' 
    $path '
                            </th>
                        </tr>'
    ;
                    
    //einlesen
                    
    $dirs $files = array();
                    
    $dir opendir ($path);
                    while (
    $entry readdir($dir))
                    if (
    is_dir($entry))
                        
    $dirs []= $entry;
                    else
                        
    $files []= $entry;
                    
    fclose ($dir);
                    
    //anzeigen
                    
    sort ($dirs);
                    for (
    $i=0$i<count($dirs); $i++)
                        echo 
    '
                            <tr>
                                <td>
                                    ' 
    $dirs[$i] . '
                                </td>
                                <td>
                                    <DIR>
                                </td>
                            </tr>'
    ;
                    
    sort ($files);
                    for (
    $i=0$i<count($files); $i++)
                        echo 
    '
                            <tr>
                                <td>
                                    <a href="./' 
    $files[$i] . '">
                                        ' 
    $files[$i] . '
                                    </a>
                                </td>
                                <td align="right">
                                    ' 
    filesize ($files[$i]) . '
                                </td>
                            </tr>'
    ;
                }
                
    showdir ('.');
                
    ?>
            </table>
        </body>
    </html>
    Hoffe, ich konnte dir helfen

    EDIT:
    Das Einfügen des Links ließ sich ganz einfach durch Ersetzen von
    PHP-Code:
    $files[$i
    durch
    PHP-Code:
    <a href="./' . $files[$i] . '"' . $files[$i] . ' </a
    erledigen.

    Nebenbei hab ich noch mal ein paar " durch ' ersetzt und Tabs eingefügt. Ist vielleicht nicht jedermanns Geschmack, aber für mich macht es das ganze irgendwie lesbarer

    EDIT2:
    Wenn du die "Verzeichnisse" "." und ".." nicht angezeigt bekommen möchtest, dann kommentier einfach diese Passage aus:
    PHP-Code:
                    for ($i=0$i<count($dirs); $i++)
                        echo 
    '
                            <tr>
                                <td>
                                    ' 
    $dirs[$i] . '
                                </td>
                                <td>
                                    <DIR>
                                </td>
                            </tr>'

    cu
    FuNKeR
    Geändert von FuNKeR (29.05.2006 um 11:02 Uhr)

  3. Erhielt Danksagungen von:


  4. #3
    Verbringt hier viel Zeit Avatar von Speedy8
    Registriert seit
    18.05.2005
    Beiträge
    855
    Bedankte sich
    12
    Erhielt 124 Danksagungen
    in 122 Beiträgen

    Standard

    Hey, Super. Danke, genau so wollte ich das.

    Irgendwie habe ich mit der Syntax so meine Probleme. Ich bin ja nun kein großer Programmierer oder PHP-Guru ... sondern versuche mir das so nach und nach zu erschließen. Aber wenn da nur mehr Zeit für wäre ... in der Freizeit?!! Aber genau so wollte ich das haben, wie Du das jetzt gemacht hast.

    MfG
    Alex

  5. #4
    Neu an Board
    Registriert seit
    22.06.2006
    Beiträge
    1
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo,

    super skript.
    Was müsste man noch ändern wenn man nicht den inhalt des verzeichnisses in dem die datei selber liegt, sondern ein anderes zB. /xyz anzeigen lassen möchte?

    Danke

    coffee1310

  6. #5
    Neu an Board
    Registriert seit
    30.01.2006
    Beiträge
    2
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard

    Also um ein anderes Verzeichnis auslesen zu lassen, muss man lediglich die Funktion
    PHP-Code:
    showdir ('.'); 
    mit einem anderen Parameter aufrufen.

    Ein Beispiel:
    Wenn Das Script z.B. das Verzeichnis "Bilder" neben dem Script-Verzeichnis aufrufen soll, dann schreibt man einfach
    PHP-Code:
    showdir ('../Bilder'); 
    Damit sollte dann der Inhalt des Ordners "Bilder" aufgeführt werden.

    cu
    FuNKeR

+ Antworten

Ähnliche Themen

  1. Joomlaboard deutsche Sprachunterstützung aktivieren
    Von willi1 im Forum Joomla Komponenten
    Antworten: 26
    Letzter Beitrag: 19.02.2007, 12:37
  2. Komme mit PHP Fehler nicht zurecht
    Von -<[PAGC]>- Isias im Forum Gelöste Themen - Joomla Anfänger
    Antworten: 4
    Letzter Beitrag: 27.05.2006, 10:17
  3. User bzw usertype ermitteln via PHP Code
    Von Pherfinion im Forum Joomla Komponenten
    Antworten: 4
    Letzter Beitrag: 08.04.2006, 14:09
  4. Akobook Plus 1.1.2
    Von snocom im Forum Mambo Komponenten
    Antworten: 7
    Letzter Beitrag: 09.01.2006, 08:23
  5. Upload new Component - error
    Von mambomax im Forum Mambo 4.5.0 Installation
    Antworten: 1
    Letzter Beitrag: 03.05.2004, 10:46

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein