PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : datei auf server löschen



maik15
18-10-2005, 18:22
Hi,

habe leider schon wieder eine frage...
Ich will über php eine datei auf dem ftp löschen.
habe bei www.php.net diesen tag gefunden: "ftp_delete(int ftp_stream, string path)".
"string path" ist die datei, aber was ist "int ftp_stream"?

Ich lasse mir über dieses script einen ordnerinhalt ausgeben:


$verz=opendir ('.');
while ($file = readdir ($verz)) {
if($file != "." && $file != "..") {
$typshow = filetype($file);
$ft = str_replace(".", "", strstr($file,"."));
if ($typshow == "dir" and $file != "icons"){
if($typshow == "dir") {
echo "<td class=\"icon\"><img src=\"icons/dir.gif\" border=\"0\" align=\"center\"></td>";
}
else {
echo "<td class=\"icon\"><img src=\"icons/$ft.gif\" border=\"0\" align=\"center\"></td>";
}
echo "<td class=\"link\" colspan=\"2\"><a class=\"file\" href=\"?test=$file\">$file</a><br></td></tr><tr>";
$file2 = @$_REQUEST['test'];
if (!empty($file2) and $file2 == $file){
echo "\t<ul>\r\n";
if ($handle2 = @opendir($file2)) {
while (false != ($file1 = readdir($handle2))) {
if ($file1 != "." && $file1 != "..") {
$typshow1 = filetype($file2.'/'.$file1);
$ft1 = str_replace(".", "", strstr($file1,"."));
if ($ft != "PHP"){
if($typshow1 == "dir") {
echo "<td class=\"icon\"><td class=\"icon\"><img src=\"icons/dir.gif\" border=\"0\" align=\"center\"></td>";
}
else {
echo "<td class=\"icon\"><td class=\"icon\"><img src=\"icons/$ft1.gif\" border=\"0\" align=\"center\"></td>";
}
echo "<td class=\"link\"><a class=\"file\" href=\"$file2/$file1\">$file1</a><br></td></tr><tr>\r\n";
}
}
}
closedir($handle2);
}
echo "\t\r\n";
}
}
}
}
closedir($verz);

das sieht dann in etwa so aus wie bei apache, bvloß mit dem jeweiligen bild davor, also für ne *.txt ein zettel...
nun wil ich hinter jede datei (und ordner) einen link setzen, der diese dann döscht. geht das?

Gruß
Maik

BLUESCREEN3D
18-10-2005, 18:31
Willst du auf dem selben Server, auf dem auch das PHP-Script läuft, eine Datei löschen? So sieht das in deinem (unübersichtlichen) Beispiel nämlich eher aus...

Wenn ja: Benutz unlink() (http://de.php.net/manual/en/function.unlink.php).

maik15
18-10-2005, 19:26
ehm, ja. ich will datein, die mit diesem script angezeigt werden löschen.
das bsp ist bloß dafür da, den gesamten ordnerinhalt auszugeben, wo das script drin ist.

ClausVB
19-10-2005, 08:52
das bsp ist bloß dafür da, den gesamten ordnerinhalt auszugeben, wo das script drin ist.

Das geht glaube ich einfacher.

1. Variante: Verzeichnisse und Unterverzeichnisse (Rekursion)

function verzeichnisse_und_dateien_auslesen($verzeichnis)
{
global $gVerzeichnisse, $gDateien;

$verzeichnis_handle = opendir($verzeichnis);

while($datei = readdir($verzeichnis_handle))
{
if ($datei <> '.' and $datei <> '..')
{
if (is_dir("$verzeichnis/$datei"))
{
array_push($gVerzeichnisse, array('verzeichnis' => "$verzeichnis/$datei/"));
verzeichnisse_und_dateien_auslesen("$verzeichnis/$datei");
}
else
{
array_push($gDateien, array('datei' => "$verzeichnis/$datei"));
}
}
}

closedir($verzeichnis_handle);
} Lass Dich von dem Befehl "array_push" nicht stören. Den brauche ich nur für vlibTemplate (um PHP und HTML Code zu trennen) (http://lamp.clausvb.de/index.php?menuid=138) zur Ausgabe. Das wirst Du nicht brauchen.


2. Variante: Nur ein Verzeichnis auslesen, die Datei ausgeben und löschen:

foreach (glob("*.jpg") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
unlink($filename);
}

Für das reine Auslesen reicht glob (http://de.php.net/manual/en/function.glob.php) und wie das oben aufgeführt Beispiel von php.net zeigt, ist das löschen ebenfalls einfach.

Gruß
Claus

maik15
20-10-2005, 15:50
OK, danke!

Maik