Verzeichnis-Inhalt darstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verzeichnis-Inhalt darstellen

    Hallo,
    ich möchte den Inhalt eines FTP-Verzeichnisses jeweils als Link darstellen.
    Dabei hab ich momentan noch Probleme. Entweder ich kann mich ned durch die Verzeichnisse klicken, oder er schlüsselt den Pfad nicht richtig auf, etc...

    Quellcode

    1. <?php
    2. // $current_dir = $HTTP_GET_VARS["current_dir"];
    3. $current_dir = "http://www.test.de/files";
    4. if (empty($current_dir)) {
    5. $current_dir = getcwd();
    6. }
    7. $dir = opendir($current_dir);
    8. while($entry = readdir($dir))
    9. {
    10. if($entry == ".")
    11. {
    12. continue;
    13. }
    14. $new_dir = $current_dir . "/" . $entry;
    15. if(is_dir($new_dir)) {
    16. echo "<a href=\"".$current_dir."/".$entry."\">" . $entry . "</a><br>\n";
    17. } else {
    18. echo "<a href=\"".$PHP_SELF."/".$new_dir."\">" . $entry . "</a><br>\n";
    19. }
    20. }//while
    21. closedir($dir);
    22. ?>
    Alles anzeigen
  • Welche Fehlermeldung kommt denn?

    Rufst du wirklich einen RemotePath auf

    Quellcode

    1. $current_dir = "http://www.test.de/files";

    ?

    Und was meinst du mit durchklicken?
    Sobald du natürlich auf einen Ordner klickst, verlässt du dein Script.

    Wenn du alle Ordner mit Unterordner anzeigen lassen möchtest, also das gesamte Filesystem, dann musst du das Rekursiv machen.
  • Ich will, dass der Benutzer sich nach der HTTP-Authentifizierung (aus dem andren Thread) ein FTP-Verzeichnis auf einer bestimmten Ebene sieht. Die Unterebenen darf er auch sehen, aber ned die Ebene über der startenden. Und jede Ebene sowie jede Datei soll verlinkt sein. Es soll praktisch so aufgebaut sein, wie wenn ich nun im Browser einen FT-Pfad eingeb. Gleichzeitig soll es aber auch möglich sein Dateien hochzuladen.

    Vllt. hat ja jemand ein paar Tipps und ich denk zu umständlich.
  • Dann solltest du direkt die FTP Funktionen benutzen:
    de2.php.net/manual/de/book.ftp.php

    Ich weiss nicht wieviel Ahnugn du hast, aber das könnte man schön mit Ajax realisieren.

    jQuery hat dürfü schon ein fertiges sehr schönes Paket:
    abeautifulsite.net/notebook_files/58/demo/


    Wobei du dir ansonsten überlegen kannst ein fertiges Script dafür als Grundlage zu benutzen.
    Mit den FTP Funktionen kannst du das selbe erreichen wie mit einem externen FTP Client.
  • Du musst zwischen Funktionen die das Filesystem betreffen und den FTP Funktionen unterscheiden.

    Wenn du mit php auf das Filesystem von "außen" zugreifst, hast du die Rechte des Webservers (wwwUser).

    Wenn du mittels ftp Funktionen auf das Filesystem zugreifst, loggst du dich mit einem FTP User ein, der mehr Recht hat, als der wwwUser.
    Somit hast du die Möglichkeit den chmod der Dateien zu verändern, Dateien zu löschen, ändern ....
    Das bekommst du von "außen" natürlich nicht hin.

    Das gilt dann auch für move_uploaded_file() und ftp_put() .
  • vince schrieb:

    Du musst zwischen Funktionen die das Filesystem betreffen und den FTP Funktionen unterscheiden.

    Wenn du mit php auf das Filesystem von "außen" zugreifst, hast du die Rechte des Webservers (wwwUser).

    Wenn du mittels ftp Funktionen auf das Filesystem zugreifst, loggst du dich mit einem FTP User ein, der mehr Recht hat, als der wwwUser.
    Somit hast du die Möglichkeit den chmod der Dateien zu verändern, Dateien zu löschen, ändern ....
    Das bekommst du von "außen" natürlich nicht hin.

    Das gilt dann auch für move_uploaded_file() und ftp_put() .

    Ah. Ok. Neuland für mich. Aber das erklärt, warum ich Dateien welche ich mit move_uploaded_file() hochlad, nicht wieder runterladen konnte, weil ich die Rechte dazu nicht hatte.
    Ich will ja das Ganze so realisieren, dass ich für meine Verzeichnisse mittels (in einer DB hinterlegten) bestimmten Usern gewisse Teile eines wiederum größeren FTP-Bereiches sehen kann. Oh Gott is das kompliziert.

    Nochmal. Ich hab einen FTP-Webspace mit einem User. In diesem FTP-Webspace soll nur über einen bestimmten Unterordner (und dessen Unterordner) ein eigenes "Datei-Hoch-und-Runterlad-System" gestaltet werden. Mit eigenen Usern, welche in einer DB hinterlegt sind und einer kleinen einfachen Weboberfläche.

    Was brauch ich dann alles?
    - Einmal hät ich eben gern obige HTTP-Authentifizierung.
    - Dann brauch ich noch ein kleines Fenster oder Formular, wo ich die Dateien hochladen kann
    - Eine Ordner bzw. Dateiübersicht
    - Einen Admin-Bereich (zum Benutzerdaten pflegen: anlegen, ändern, löschen)

    Anbei ein Screenshot wie ich mir des in etwa vorstell. Ich brauch nun nur noch irgendwie den Denk-Ansatz...
    Bilder
    • wunsch_gui.jpg

      116,98 kB, 1.288×1.024, 319 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von robert712 ()

  • Hallo, gehen wir doch mal Systematisch vor und schieben die Implementierung erstmal beiseite. Was du im Groben und ganzen machen willst ist aus einem Singel-FTP Account ein Multi-User-FTP Account machen.

    So, gliedern wir das mal in simple Schritte ein was passieren muss um das zu realisieren.

    Ein Login-System was unabhänig von deinem FTP User-Daten ist. Hierfür würde ich eine Datenbank empfehlen, da man hier mehr Einfluss auf Sicherheit hat (wie sei erstmal dahin gestellt).

    So hier mal ein schematischer Ablauf deines Vorhabens.

    User(Anonym) -> Login (zum registrierten user) -> Zugriff auf den FTP über die Hinterlegten Daten.

    So mit gehen alle deine User über deinen FTP-Account ohne die Daten zu kennen. Wenn du das mit FTP richtig implementierst musst du auch an den Berechtigungen nix um bauen. Da du einen ja einen Wrapper hat, kannst du via PHP somit auch die Ordner sperren wo keiner rein soll.

    So nun zur Implementiereung. Erstmal müssen die Basics Funktionieren, der rest ist dann recht simpel.

    Als ersten baust du mit PHP erstmal eine FTP-Verbindung auf und ließt alle Ordner und Datein sinnvoll aus. Dazu bietet die SPL feine Sachen. Directory Iterator und den Recursive Directory Iterator

    So wenn du das gemacht hast, hast du das Gröbste schonmal geschaft. Als nächstes baust du dir ein Authentification System, wo sich user einloggen können, die dann wiederrum auf deine FTP implementation zugreifen können.

    Wenn du das geschaft hast, kannst du dich um Up und Download kümmern.

    so long
    jd
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • d0nut schrieb:

    vergess das Posting von JFox nicht, aber ich meine Frage geht noch einen Schritt zurück.

    Sollen deine Benutzer den Browser oder ein FTP Programmm zum Download nutzen?
    Ich gehe davon aus, sie sollen den Browser verwenden. Wenn du also mit move_uploaded_file arbeitest, dann brauchst du keine einzige FTP Funktion!


    Ja, das Ganze soll über den Browser realisiert werden. Ich hab auch schon die funktion move_uploaded_file() benutzt, allerdings immer mit dem phänomen, dass dann die berechtigungen der hochgeladenen datei nciht so gesetzt wurden, wie ich mir das vorstellte.. da muss ich mich noch mit dem chmod vertraut machen...