PCMasters Hardware Forum > Software > GFX, Webdesign und Programmierung > Seite 4 > [PHP]Alle Datein und Unterordner + Links auflisten

Im PC Forum registrieren


Produktsuche
IDEALO-PRODUKT-SUCHE
idealo preisvergleich
PCM News & Reviews
Antwort
 
 
Alt 05.04.2011, 12:30
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

[PHP]Alle Datein und Unterordner + Links auflisten



Hallo,

ich wollte mal fragen, wie ich Alle Datein und Unterordner aus einem Ordner auf dem Webspace auslesen kann. Und dann möglichst bei den Datein die Links noch dazu.
Habe schon gegooglet aber ich finde nichts richtiges, wo auch die Links angezeigt wird.

Mit freundlichen Grüßen hallo2000

EDIT:
Diesen Code habe ich getestet: ]
Er funktioniert auch doch leider ohne Link. Kann man das vieleicht noch hinzufügen?

Geändert von hallo2000 (05.04.2011 um 12:34 Uhr).
Alt Heute
Hardware Bot
Computer Informationen
 
Diese Werbung wird registrierten
Mitgliedern nicht angezeigt.
Werden Sie noch heute kostenlos Mitglied
auf PCMasters.de
Standard Weitere Informationen

 
Alt 05.04.2011, 12:55
pixelflat
 
Standard

Wo ist das Problem? Du musst doch nur die Pfade auf URLs abbilden.

Ich schätze mal, dass dann sowas in der Art raus kommt:
Code:
/var/www/ordner/datei
/var/www/ordner/ordner2/datei
/var/www/ordner/ordner2/datei2
Dann ersetzt du das "/var/www" durch den absoluten Pfad "http://www.seite.de". Oder du löscht das /var/www und hast relative Pfade vom document root.

Das Ganze dann natürlich noch ausgeben...

Edit: Sehe gerade, dass nur der Dateiname ausgegeben wird. Du brauchst natürlich den Pfad auch.
PHP-Code:
printf"% ".$pos."s %s\n"'|-'$dir.$file ); 

Geändert von pixelflat (05.04.2011 um 13:04 Uhr).
 
Alt 05.04.2011, 13:04
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

also bis jetzt kommt nur der Dateiname raus.
Ich möchte ja auf diesen Dateiname noch den Link haben.
Wie kann ich das den dazu geben?
 
Alt 05.04.2011, 13:37
pixelflat
 
Standard

Siehe mein Edit. Mit $dir.$file hast du den Pfad ab dem angegebenen Such-Verzeichnis.

Die Ausgabe ist dann ja leicht:
PHP-Code:
echo "<a href='$dir$file'>$file</a>"
Das funktioniert natürlich nur solange du einen Pfad innerhalb von /var/www/ angibst (bzw. wo auch immer document root ist). Macht andernfalls aber auch keinen Sinn, weil du auf andere Dateien nicht verlinken kannst.
 
Alt 05.04.2011, 13:38
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

ok, aber wie kann ich das var/www/ nun ändern?

EDIT:

Ich hab das jetzt mal geändert und jetzt wird auch noch etwas vom Pfad hinzugefügt.
Aber ich möchte es eigentlich möglichst so, das nur der Dateiname angezeigt wird und dann wenn man draufklickt, das man dann die Datei öffnet.

Geändert von hallo2000 (05.04.2011 um 13:43 Uhr).
 
Alt 05.04.2011, 13:45
pixelflat
 
Standard

Ich glaube du solltest dich erst mal mit den Grundlagen von PHP beschäftigen. Besser sogar erst mal HTML.

Ein Link sieht so aus: <a href="PFAD_ZUR_DATEI">LINKNAME</a>

Du musst nur alles an der richtigen Stelle einsetzen.
 
Alt 05.04.2011, 13:52
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

Also mit HTML kenne mich etwas aus.
Ich weiss auch wie ich einen text per HTML ausgebe doch mein Problem ist, das ich das mit dem Link nicht hinbekomme.

Geändert von hallo2000 (05.04.2011 um 13:55 Uhr).
 
Alt 05.04.2011, 14:00
pixelflat
 
Standard

Hab ich doch oben schon geschrieben:

Zitat:
Zitat von pixelflat Beitrag anzeigen
Die Ausgabe ist dann ja leicht:
PHP-Code:
echo "<a href='$dir$file'>$file</a>"
 
Alt 05.04.2011, 14:13
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

das funktioniert ja nicht.
Es werden nur die Namen angezeigt und es werden keine Links dazu gemacht und dann wird auch noch die ganze seite zerstört.
 
Alt 05.04.2011, 15:02
pixelflat
 
Standard

Poste mal deinen Code wie du ihn verändert hast...
 
Alt 05.04.2011, 15:27
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

PHP-Code:
<?php
 
function show_dir$dir$pos=)
{
    if ( 
$pos == ) {
        echo 
"<hr /><pre>";
    }
 
    
$handle = @opendir$dir );
    if ( 
is_resource$handle ) ) {
        while ( ( 
$file readdir$handle ) ) !== false ) {
            if ( 
preg_match'~^\.{1,2}$~'$file ) ) {
                continue;
            }
 
            if ( 
is_dir$dir.$file ) ) {
                
printf"% ".$pos."s <b>%s</b>\n"'|-'$file );
                
show_dir$dir.$file.'/'$pos );
            } else {
                
printf"% ".$pos."s %s\n"'|-'$file );
            }
        }
        
closedir($handle);
    }
 
    if ( 
$pos == ) {
        echo 
"<a href='$dir$file'>$file</a>"
    }
}
 
show_dir'raven-files/' );
 
?>
 
Alt 05.04.2011, 16:07
pixelflat
 
Standard

Hast du dir einfach irgendein echo ausgesucht und das ersetzt?

Zugegeben, der Code ist nicht ganz einfach, vor allem weils eine rekursive Funktion ist. Aber die 2 Bedingungen am Anfang und Ende sind lediglich für die 2 horizontalen Linien.

PHP-Code:
<?php
 
function show_dir$dir$pos=)
{
    if ( 
$pos == ) {
        echo 
"<hr /><pre>";
    }
 
    
$handle = @opendir$dir );
    if ( 
is_resource$handle ) ) {
        while ( ( 
$file readdir$handle ) ) !== false ) {
            if ( 
preg_match'~^\.{1,2}$~'$file ) ) {
                continue;
            }
 
            if ( 
is_dir$dir.$file ) ) {
                
// Ausgabe: Verzeichnisname
                
printf"% ".$pos."s <b>%s</b>\n"'|-'$file );
                
show_dir$dir.$file.'/'$pos );
            } else {
                
// Ausgabe: Dateiname
                
$link "<a href='$dir$file'>$file</a>";
                
printf"% ".$pos."s %s\n"'|-'$link );
            }
        }
        
closedir($handle);
    }
 
    if ( 
$pos == ) {
        echo 
"</pre><hr />"
    }
}
 
show_dir'raven-files/' );
 
?>
Folgende User haben sich für den guten Beitrag bedankt:
 
Alt 05.04.2011, 16:39
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

Ich danke dir.
Es hat endlich funktioniert.
Danke, Danke, Danke


EDIT (autom. Beitragszusammenführung):


Ich hätte noch eine Frage.
Kann ich diese Funktion auch per Button oder HTML link durch klick ausführen, so das es aktualisiert wird?

Geändert von hallo2000 (05.04.2011 um 16:39 Uhr). Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!
 
Alt 05.04.2011, 17:21
pixelflat
 
Standard

Jain.

Wenn die Seite schon geladen wird kannst du mit PHP nichts mehr machen. Du könntet höchstens die komplette Seite mit einem Button aktualisieren (<input type="button" value="Aktualisieren" onclick="window.location.reload()"/>).

Eine bessere, aber auch etwas kompliziertere Möglichkeit wäre AJAX. Dafür speicherst du nur die Funktion und sonst nichts in eine PHP-Datei und rufst sie mit JS später auf. So kannst du auch die Liste aktualisieren ohne die Seite komplett neu laden zu müssen. Ich würde dafür eine JS Bibliothek wie JQuery oder prototype verwenden - macht das Ganze wesentlich einfacher.
 
Alt 05.04.2011, 18:04
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

dann mach ich mir das erstmal leicht und lade die Seite ganz neu.
Aberich werde mir das andere auch mal anschauen.
Danke.


EDIT (autom. Beitragszusammenführung):


Ich hab das noch eine frage zu der Dateiauflistung.
Also die Datein werden nun ja aufgelistet.
Nun möchte ich noch ein kleines Bild daneben haben, womit ich die Datein löschen kann. Das Bild wird schn angezeigt und ich weiss auch wie man Datein löscht, doch kann man das überhaupt so machen, weil das Datein löschen ja nur mit php geht?

Geändert von hallo2000 (05.04.2011 um 18:04 Uhr). Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!
 
Alt 05.04.2011, 18:40
pixelflat
 
Standard

Dafür musst du einen neuen Request an den Server schicken und den dann auswerten, entweder über POST oder GET.

Es macht aber nicht viel Sinn jetzt eine Lösch-Funktion einzubauen, wenn du dich nicht authentifizieren kannst. Denn so kann jeder einfach irgendwelche Dateien löschen.

]
 
Alt 05.04.2011, 18:44
Benutzerbild von hallo2000
Threadersteller
hallo2000
 
Standard

ne, das stimmt nicht gans, weil bevor man da überhaupt hinkommt, muss man sich einloggen. Und das läuft wiederrum über eine MySQL Datenbank.
Und die, die sich dort einloggen können, bin ich und 2 Kumpels und wenn wir etwas löschen, ist das ok.
 
Alt 05.04.2011, 23:40
Creator1981
 
Standard

Möchte mich hier nicht wirklich in den Thread reinhängen, aber ich finde die schreibeweise:
PHP-Code:
$link "<a href='$dir$file'>$file</a>"
nicht wirklich schön.

Ich würde immer folgende Schreibweise bevorzugen. Das macht den Code einfach lesbarer.

PHP-Code:
$link "<a href='".$dir.$file."'>$file</a>"
Sieht doch gleich viel schicker aus Bei größeren Strings oder Verkettungen wäre es sonst echt übel sich da einlesen zu müssen.

Nur so als Tip!
hardware forum Neue Frage stellen?
Kurze Zusammenfassung der Frage:
Bitte wählen Sie eine Kategorie:
Mailadresse:
Ihre Frage:
Ihre Frage wird als Gast gespeichert. Sollte eine Antwort im Forum erfolgen, bekommen Sie diese per Email zugeschickt.


Antispam, bitte die folgende Aufgabe lösen: 
 
Um auf dieses Thema zu ANTWORTEN
bitte sich zuerst » hier kostenlos registrieren!!

Antwort

Tags: , , , , ,



Sie betrachten gerade: [PHP]Alle Datein und Unterordner + Links auflisten


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr.



Im PC Forum registrieren