php & ftp - dateisuche

Daniel Steffen novinet

Angesehenes Mitglied
Hallo,

ich möchte einen Fileuploader in PHP mit FTP Connection zu einem fremden Server programmieren. Host, User und Pass seien gegeben, nun kann ich mich zwar connecten, weiss aber den root-Ordner des fremden Servers nicht. Wenn ich mich auf meinem Server connecte, erscheinen alle Domains unter meinem Usernamen.
Also:
.
..
domain1.de
domain2.de

In diesen Domains liegen jeweils die htdocs-files drin.

Selbstverständlich ist jeder Server anders konfiguriert und ich kenne diese Konfiguration nicht. Die Kunden sind aber meistens solche Daus, dass sie das Problem nicht verstehen würden. Aus mehreren Gründen ist es mir auch nicht möglich manuell das Verzeichnis zu suchen.

Nun bin ich auf folgende Ideen gekommen:

Möglichkeit A:
Kunde bekommt eine install.php - nachdem er diese in seinen Wunschordner gespielt hat ruft er sie auf, diese ermittelt den relativen pfad (also bei mir root/domain1.de/dateiname) und gibt den wiederum an meinen server zurück um da die daten zu verarbeiten

Möglichkeit B (und mein Favorit):
Kunde bekommt eine File mit nem speziellen Namen, spielt sie in das Wunschverzeichnis, und geht dann auf meinen Server in die Admin und sagt "such!" - mein script verbindet sich dank Host, User und Pass per php & ftp mit seinem Server, sucht die File (die einen eineindeutigen Namen hat) und speichert dann den Pfad.

Hier hab ich folgendes verfasst, aber das führt zu nem Timeout:

function getftplist($conn_id,$path) {
$arr = ftp_nlist($conn_id,$path);
foreach ($arr as $v) {
if(ereg("dateiname", $v)) {
echo "gefunden: $v"; }
else { getftplist($conn_id,$v); }
print "$v<br>\n"; }
}

Nur hier hab ich halt das Problem, dass ich keine gute Suche zustandebringe.

Kann mir jemand helfen?

Danke, Daniel
 
Verbindung hat ja offenbar geklappt
in einem FTP ist das auch nicht so arg schwer.

du machst dir eine Funktion die du dann immer wieder aufrufen kann die ein gegebenes Verzeichnis ausliest und sich, sofern es sich um einen Ordner handelt, wieder neu mit dem neuen Ordner aufruft. Bei FTP musst du dann immer vor jeder Operation in das gewünschte Verzeichnis wechseln
smile.gif


CODE function readftpdir ($dir, $con) {
ftp_chdir ($con, $dir);
$liste = ftp_rawlist ($con, $dir);
foreach ($liste as $v) {
preg_match ("/([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/", $v, $ar);
if (substr($ar[1], 0, 1) == 'd') {
# ist ein verzeichnis also dings neu aufrufen.
readftpdir ($dir.'/'.$ar[9], $con);
ftp_chdir ($con, $dir);
} else {
# hier dein check obs eben die datei ist.
# wenn ja musst du mit return die funktion und die
# schleife beenden
if ($ar[9] == 'MEINESUPERDATEI') {
return ($dir);
}
}
}
}


$con = ''; #verbindungs kennung

$verzeichnis = readftpdir ('/');


ob das funktioniert... keine ahnung, aber so in der Art sollte das gehen. du musst das bissel mit diesem ftp_chdir ($con, $dir); testen evtl.
 
Zurück
Oben