Datei-Upload Script

@reptiler, das hört sich aber garnicht gut an. :(

Grad weil wir uns ja kennen, wollte ich eventuelle Missverständnise aus dem Weg räumen. ;)

Dass man ein Buchstabenverdreher übersieht passiert schnell mal, aber gleich eine ganze Zeichenfolgen (/home/www/web106)? :eek:
Da warst Du wohl nicht so ganz bei der Sache..... passiert mir aber auch manchmal ;)

Und das mit den Rechten, zum Glück gibt es ja auch Leute die mitdenken. ;)
Ich hätte dich ihn ja auch die FTP-Funktion erklären lassen können. :p
 
Ich hoffe mal, es wird wieder besser. Aber keine Sorge, es geht dabei nicht um mich.
Will das hier, in aller Oeffentlichkeit, aber auch nicht gross breittreten.

Die FTP-Funktionen sind ja noch recht einfach.
Wie erwaehnt bastle ich grad daran FTP mittels fsockopen() zu machen.
Das ist ein Spass. :)
RFC959 ist dabei recht behilflich. Und natuerlich Ethereal.
Mit einer kleinen Trafficanalyse bekommt man einen Ueberblick was so ablaeuft bei FTP, und das RFC kann einem naehere Infos darueber geben was man da sieht.

Hier mal ein Auszug aus dem Script:
PHP:
//...
fwrite($ftp,"CWD /home\n");
$control[]=fgets($ftp);
fwrite($ftp,"PASV\n");
$control[]=fgets($ftp);
$pasvresponse=$control[count($control)-1];
$pos=0;
for ($x=0;$x<4;$x++)
	{
		$pos=strpos($pasvresponse,",",$pos+1);
	}
$pasvresponse=substr($pasvresponse,$pos+1);
$pos=strpos($pasvresponse,")");
$pasvresponse=substr($pasvresponse,0,$pos);
$pasvresponse=explode(",",$pasvresponse);
$port=bindec(sprintf("%08u",decbin($pasvresponse[0])).sprintf("%08u",decbin($pasvresponse[1])));
$ftpdata=fsockopen("localhost",$port);
if ($ftpdata!=false)
	{
		echo 'Port:'.$port.'<hr />';
		//fwrite($ftp,"LIST\n");
		fwrite($ftp,"STOR test.txt\n");
		//fwrite($ftp,"RETR switchphp\n");
		$control[]=fgets($ftp);
		/*$data="";
		while (!feof($ftpdata))
			{
				$data.=fgets($ftpdata);
			}*/
		fwrite($ftpdata,"Hallo\nTest\n");
		fclose($ftpdata);
		//echo nl2br($data);
		echo '<hr />';
	}
else
	{
		echo 'Could not establish data connection<br />';
	}
//...
Und das zu erklaeren waere dann wirklich witzig geworden. Besonders wo ich ja noch nicht alles fertig hab.
 
Zuletzt bearbeitet:
Ich denke schon. ;)

Immerhin ist aus dem Code mittlerweile schon eine Klasse entstanden.
Diese hat auch schon die wichtigsten Funktionen drauf.
Also Verzeichnisse listen, Dateien hoch- und runterladen, Verzeichnisse wechseln, das aktuelle Verzeichnis anzeigen, Verzeichnisse erstellen und loeschen und Dateien koennen auch geloescht und umbenannt werden.
Ich hab sogar etwas Code eingebaut um dafuer zu sorgen, dass sich die Klasse bei Fehlern nicht in eine Endlosschleife haengt.
Gibt's sonst noch was was unbedingt rein soll?
Was auf jeden Fall noch kommt ist es die Rechte zu aendern.
 
Reptiler du bist einfach nur gut :) ne das reicht doch mehr kann ein FTP Programm auch net.

Mal so ne Frage ich habe mal auf den Link zum RFC aber ich versteh das net kannst du mir mal ein Befehl der da Steht hier rein Posten da ich net verstehe was davon befehle sind :(
 
Vielen Dank fuer die Blumen. :)
Die Befehle sind im Grunde genommen all das was ich mittels fwrite() an $ftp sende.
Zum Beispiel:
LIST
RETR
CWD
PWD
STOR

Am einfachsten ist die Analyse mit einem guten Netzwerktool wie Ethereal. So kann man recht gut beobachten was so ablaeuft. Der RFC ist dann nur zusaetzliche Lektuere um z.B. noch andere Befehle zu entdecken oder etwas die Funktion zu verstehen.

Abschnitt 4.1.3 - FTP SERVICE COMMANDS war der nuetzlichste Teil dieses RFCs.
Ausserdem war Abschnitt 4.2 - FTP REPLIES auch ganz interessant zur Vorbeugung vor Endlosschleifen.
 
Ich verstehe, also ein Webbasierter FTP Client.
Nicht schlecht..... einige Hoster bieten sowas ja auch.

Aber fehlt nicht noch eine Funktion um Dateien/Ordner zu verschieben?
Sowas sollte ja zu den Grundfunktionen gehören. ;)

Und wie sieht es mit benutzerdefinierten Kommandos aus?
Diese könnte man u.U. aber auch ausser acht lassen.
 
Was fuer benutzerdefinierte Kommandos meinst Du so?

Ich denke das verschieben laeuft ueber's umbenennen.
Unter Linux ist das ja mittels mv auch das gleiche.
Ich werd mal morgen im RFC schauen und was rumprobieren.
 
Z.b. um versteckte Dateien aufzulisten (ich glaube "list -l" war dass?!).
Es gibt nämlich auch Hoster die selbst auf dem FTP z.b. die .htaccess verstecken..... und dann versuch mal den Ordner zu löschen. ;)
Sonst fällt mir jetzt nichts spezielles weiter ein.

Keine Ahnung wie dass verschieben unter Linux funktioniert..... ich mache es mit WinSCP per Drag&Drop. ;)
 
Ok Leute, ich bin doch nicht blöd, was verdiehnt man hier bei Tutorials.de wenn man durch Beantworten von Fragen und aktiv halten des Besucherstroms hier arbeitet, reptiler? Gumbo? Sven Minutel? usw. ?--> PN Nachricht.
 
Zurück