File Transfer Protocol

B

Bgag

Abend!
Ich beschäftige mich momentan mit dem File Transfer Protocol. Läuft auch ganz gut, da dieses Protocol ja bekanntlich ein recht einfaches ist. Ich habe nun aber doch eine Frage. Ich habe per fsockopen eine Verbindung mit dem FTP-Server aufgebaut und möchte Jetzt eine Aktion ausfüren. Danach möchte ich überprüfen ob die Aktion erfolgreich war. Ich habe mir überlegt, dass ich das ja mit einer einfachen kleinen if-Abfrage machen könnte. Ich speicher die Antwort für diese Aktion in $reply und schaue mir die erste Ziffer an. Wenn es eine zwei ist, kann ganz normal weiter verfahren werden. Ich komm darauf, da ich der meinung bin, dass, wenn ich das richtig überblickt habe, alle positiven serverantworten mit einer 2 beginnen. (200 - Command OK; 213 - Dateistatus; etc.) Das ganze würde folglich dann etwa so aussehen:
PHP:
<?php
fwrite($this->connection, 'ACTION\r\n');
$reply = fgets($this->connection);

if (substr($reply, 0, 1) != 2)
{
	throw new Exception('No!');
}

return true;
?>
Könnte das so gehn?
MfG, Andy
 
Was spricht gegen die Verwendung der [phpf]ftp[/phpf] Funktionen?
Des Weiteren erscheint mir
PHP:
fwrite($this->connection, 'ACTION\r\n');
eher
PHP:
fwrite($this->connection, "ACTION\r\n");
heißen zu sollen, denn ansonsten wird wirklich ACTION\r\n statt ACTION{rewind}{newline} übertragen.
Was gibt dir denn var_dump($reply); aus? Eventuell solltest du die Rückgabe, sollte sie einen ResponseCode beinhalten (was darauf schließen ließe, dass deine Methode funktioniert), [phpf]trim[/phpf]men und nach Integer casten, so dass du dann eine ordentliche Prüfung vornehmen kannst:
PHP:
if ( $reply >= 200 && $reply < 400 ) {
    // hat geklappt
}
 
Bedenke, dass du den erst Socket leerlesen solltest, bevor du dein 1. Kommando hineinschreibst. Viele Server haben eine Welcome-Msg oder aehnliches.Nach meiner Erfahrung kann es sonst zu Problemen kommen.
Ansonsten wuerd ich's so einfach mal probieren ;)

Gruesse

b
 
Danke euch beiden. Ich habe aber noch ein Problem, auf das mich maeTimmae gebracht hat. Es sind ja nicht nur die antworten von 200-299 das Zeichen, dass alles richtig ausgeführt wurde, sondern auch 100-199 und 300-399. Jedoch weisen die beiden letzen Meldungsblöcke darauf hin, dass weitere Aktionen erwartet werden. Jetzt wäre es allerdings interessant zu wissen, bei welchen aktionen noch eine weitere Aktion erwartet wird. kann mir jemand sagen, welche dass sind, damit ich darauf bei meiner Überprüfung achten kann.
MfG, Andy
 
AlTools bietet einige tabellarisch aufgelistete Informationen dazu - Empfehlenswert ist ein Blick in die dritte Tabelle. Eventuell wäre auch eine genaue Implementierung der entsprechenden Response Codes angemessen?

mr b: Danke für den Hinweis, auf sowas kommt man gar nicht, wenn man es noch nie aktiv benötigt hat :-(
 
Danke erstmal für den Tipp MaeTimmae. Schau mir das ganze mal in ner Ruhigen Minute an.
MfG, Andy
 
Zuletzt bearbeitet von einem Moderator:
Zurück