Seite 1 von 1

Verzeichnis auf anderem Server 'grabben'?

Verfasst: 10.06.2006 10:37
von Wissler
Kann ich mit php ein entferntes Verzeichnis 'grabben'?
Wenn ja: wie?

In dem entsprechenden Verzeichnis liegen Bilddateien. Ich möchte den kompletten Inhalt des Verzeichnisses auf meinen Server kopieren.

(Nebenbei bemerkt: ich bin dazu autorisiert. Per Hand ist es mir
zu aufwendig, da es mehrere 100 Bilder sind, die auch noch alle paar
Tage geändert werden).

Danke im Voraus!

Verfasst: 10.06.2006 10:50
von Wissler
Ich habe einen Ansatz gefunden, den ich noch ausprobieren muss:

Code: Alles auswählen

$externe_datei = "http://fremderserver.de/bild.jpg";

// externe Datei auslesen
$fp=fopen($externe_datei, "r");
$bild = fread($fp, filesize($externe_datei));
fclose($fp);

// Datei erstellen + schreiben
$fp = fopen("bild.jpg", "w");
fwrite($fp, $bild, strlen($bild));
fclose($fp);


/*
Dazu muß aber "fopen wrappers" aktiviert sein.
siehe dazu:
http://de3.php.net/manual/de/function.fopen.php
http://de3.php.net/manual/de/function.readfile.php
*/

Verfasst: 10.06.2006 11:19
von Sebastian R.
Du kannst nicht per PHP-Skript andere Dateien von anderen Servern auslesen. Du kannst zwar per Socket-Funktionen mit dem GET-Befehel eine Datei runterladen, aber du kannst nicht einfach per fopen auf die Files zugreifen. Dann könntest du ja auch die config.php auslesen! ;)

Verfasst: 10.06.2006 11:25
von fanrpg
Dann könntest du ja auch die config.php auslesen!
Mit den falsche CHMOD (777) und nen paar schlechten PHP und Apache Einstellungen ist das ohne Probleme möglich :wink:

Verfasst: 11.06.2006 19:03
von Diezel
fanrpg hat geschrieben:
Dann könntest du ja auch die config.php auslesen!
Mit den falsche CHMOD (777) und nen paar schlechten PHP und Apache Einstellungen ist das ohne Probleme möglich :wink:
Ist es nicht. Bevor was vom Server gesendet wird, wird die PHP-Datei in jedem Falle interpretiert. Sprich was du bekommst ist allenfalls ein paar von PHP ausgegebene Daten. Es sei den du stellst deinen Interpreter ab... aber der Fall wäre ja etwas suboptimal.

Ansich ist aber das grabben eines fremden Verzeichnisses keine Thema, sofern man eine Dateiliste besitzt.

Diese Dateiliste könnte man in ein Array schreiben.

$files = array("http://www.example.org/bild1.jpg","http ... /bild3.jpg"...);



Nun könnte man das array durchlaufen und jede Datei laden.
Dazu können wir sehr wohl fopen(); verwenden.
http://php.net/fopen


foreach($files as $externe_datei)
{
// externe Datei auslesen
$fp=fopen($externe_datei, "r");
$bild = fread($fp, filesize($externe_datei));
fclose($fp);

//Dateiname & Pfad
$path = "./neuerordner/";
$filename = basename($externe_datei);

// Datei erstellen + schreiben
$fp = fopen($path.$filename, "w");
fwrite($fp, $bild, strlen($bild));
fclose($fp);
}

So mit richtigem CHMOD sollte es funktionieren.
Hoff ich :D

Hier noch einmal der ganze Code:

Code: Alles auswählen

<?php
echo "Directory Grabber by Diezel :P<p>";
$files = array("http://www.example.org/bild1.jpg","http://www.example.org/bild2.jpg","http://www.example.org/bild3.jpg"...);
foreach($files as $externe_datei)
{
echo "Downloading ".$externe_datei."<br>";
// externe Datei auslesen 
$fp=fopen($externe_datei, "r"); 
$bild = fread($fp, filesize($externe_datei)); 
fclose($fp); 

//Dateiname & Pfad
$path = "./neuerordner/";
$filename = basename($externe_datei);

// Datei erstellen + schreiben 
$fp = fopen($path.$filename, "w"); 
fwrite($fp, $bild, strlen($bild)); 
fclose($fp); 
}
echo "Operation finished.";
?>
Ich hoffe das funktioniert...
Wenn ja viel spass ;)

gruß,
DIEZEL