You are not logged in.

  • Login

1

Wednesday, January 21st 2009, 11:24am

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...

PHP Quellcode

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

2

Wednesday, January 21st 2009, 11:33am

Welche Fehlermeldung kommt denn?

Rufst du wirklich einen RemotePath auf

PHP 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.

3

Wednesday, January 21st 2009, 11:46am

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.

4

Wednesday, January 21st 2009, 11:52am

Dann solltest du direkt die FTP Funktionen benutzen:
http://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:
http://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.

5

Wednesday, January 21st 2009, 12:01pm

Nun versteh ich noch mehr Bahnhof. Also von Ajax hab ich keine Ahnung. Ich weiß, dass PHP FTP-Functionen hat. Ich habs auch schonmal geschafft, Dateien hochzuladen.
Damals mit der Funktion:

PHP Quellcode

1
move_uploaded_file(..)

6

Wednesday, January 21st 2009, 12:23pm

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() .

7

Wednesday, January 21st 2009, 1:27pm

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...
robert712 has attached the following file:
  • wunsch_gui.jpg (116.98 kB - 88 times downloaded - latest: Mar 21st 2012, 5:58am)

This post has been edited 2 times, last edit by "robert712" (Jan 21st 2009, 1:40pm)


8

Wednesday, January 21st 2009, 3:39pm

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

9

Thursday, January 22nd 2009, 8:01pm

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!

10

Wednesday, January 28th 2009, 1:24pm

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...

Similar threads

Social bookmarks