Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit löschen einer Datei



Tessio
23.07.2006, 10:30
Hallo.
Ich möchte mit PHP eine Datei (CHMOD 777) von meinem Server löschen lassen.
Diese Datei liegt in einem Verzeichnis darüber, dann im Verzeichnis data/content, also ../data/content.
Das Script sieht so aus :



<?

if(!isset($file_del)) {
die "<p>Keine Datei ausgew&auml;hlt!";
} else {
$path = "../data/content/";
$file_del_do = $path.$file_del;
unlink($file_del_do);
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Datei \"".$file_del."\" wurde gel&ouml;scht.<br /><br />\n";
echo "<a href=\"index.php?content=files\">Zur File&uuml;bersicht</a>";
echo "</p>\n";
echo "</div>\n";
}

?>


Die URL lautet index.php?content=delete_do&file_del=test.php.
Es wird angezeigt, dass die Datei gelöscht wurde, sie existiert aber noch

mitaki
23.07.2006, 11:07
Banale Lösung: Hat dein Server PHP <? deaktiviert, wodurch das ganze als HTML tag angesehen wird und daher nicht angezeigt wird?
Hinweis: <?php funktioniert immer, nur das für guten Code nehmen ;)

Komische Lösung: hast du den richtigen Pfad und Namen für die Datei angegeben?


_del=tes t.php
Da wäre z.B. ein überflüssiges Leerzeichen, wie ich annehme.

Wissenswerte Lösung: Wenn ich mich richtig erinnere, muss die Datei, die den Löschbefehl enthält die richtigen CHMOD Werte besitzen, nicht andersrum.

Tessio
23.07.2006, 11:11
Wie das Leerzeichen dahin gekommen ist, keine Ahnung, wenn ich den Beitrag editieren will, ises nich da o0 Also der Path stimmt, da hab ich schon mit var_dump nachgeschaut.
PHP hat mein Server auch aktiviert, sonst würde der Rest meines ACP ja nicht funzen ._.
Beide Dateien haben CHMOD 777, daran kanns auch nich liegen.

mitaki
23.07.2006, 11:20
PHP vielleicht schon, aber nicht die Einleitung eines Codeblocks mit der kurzschreibweise <?, besser wäre <?php, aber wenn deine anderen Skripte trozdem funktioneiren kann es daran nicht liegen.

Eventuell könntest du noch versuchen, den absoluten Pfad der Datei anzugeben, weiter kann ich dann leider auch nicht helfen, da ich eigentlich nie mit diesen Funktionen arbeite.

Ah, fast übersehen (peinlich):

Variablen, die du über die URI angibt rufst du folgendermaßen auf: $_GET['name'], bei dir also: $_GET['file_del']. Ersetze deine drei Variblen durch die richtige Schreibweise.

Tessio
23.07.2006, 11:31
Hab $file_del mit $_GET[file_del] ersetzt, funktioniert aber immernoch nicht.
Code ist jetzt folgender :


<?

if(!isset($file_del)) {
echo "<p>Keine Datei ausgew&auml;hlt!";
} else {
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Wollen sie die Datei \"".$_GET['file_del']."\" wirklich l&ouml;schen?<br /><br />\n";
echo "ACHTUNG! Wenn sie NICHT Samogas heißen, kann dieser bei Best&auml;tigung evtl sauer werden!<br /><br /><br />\n";
echo "<a href=\"index.php?content=delete_do&file_del=".$_GET['file_del']."\" >Bestätigen</a>";
echo "<img src=\"data/img/space.gif\" alt=\"\" width=\"50\">";
echo "<a href=\"index.php?content=files\">Abbrechen</a>";
echo "</p>\n";
echo "</div>\n";
}



?>

mitaki
23.07.2006, 11:46
Ok, einmal hast die Angabe vergessen. Aber ich glaube der große Fehler war u.a. das die.

Versuch bitte diesen beiden Codeblöcke, bei mir hat es geklappt:


<?php

if(!isset($_GET['file_del'])) {
echo "<p>Keine Datei ausgew&auml;hlt!</p>";
} else {
$path = "../data/content/";
$file_del_do = $path.$_GET['file_del'];
unlink($file_del_do);
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Datei \"".$file_del."\" wurde gel&ouml;scht.<br /><br />\n";
echo "<a href=\"index.php?content=files\">Zur File&uuml;bersicht</a>";
echo "</p>\n";
echo "</div>\n";
}

?>

<?php

if(!isset($_GET['file_del'])) {
echo "<p>Keine Datei ausgew&auml;hlt!</p>";
} else {
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Wollen sie die Datei \"".$_GET['file_del']."\" wirklich l&ouml;schen?<br /><br />\n";
echo "ACHTUNG! Wenn sie NICHT Samogas heißen, kann dieser bei Best&auml;tigung evtl sauer werden!<br /><br /><br />\n";
echo "<a href=\"index.php?content=delete_do&file_del=".$_GET['file_del']."\" >Bestätigen</a>";
echo "<img src=\"data/img/space.gif\" alt=\"\" width=\"50\">";
echo "<a href=\"index.php?content=files\">Abbrechen</a>";
echo "</p>\n";
echo "</div>\n";
}



?>

Tessio
23.07.2006, 15:07
Hm... also funktionieren tuts immernoch nicht T__T
Ich mach mal ne genaue Beschreibung :
Also. Man klickt auf ein kleines Bildchen, dessen Link folgender ist :

http://***/***/index.php?content=delete&file_del=test.php
Denkt euch das Leerzeichen weg, dass steht da aus unbekanntem Grund, fehler von vB.
Dann kommt man auf die Seite content=delete, die folgendes Script hat :

<?php

if(!isset($_GET['file_del'])) {
echo "<p>Keine Datei ausgew&auml;hlt!</p>";
} else {
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Wollen sie die Datei \"".$_GET['file_del']."\" wirklich l&ouml;schen?<br /><br />\n";
echo "ACHTUNG! Wenn sie NICHT Samogas heißen, kann dieser bei Best&auml;tigung evtl sauer werden!<br /><br /><br />\n";
echo "<a href=\"index.php?content=delete_do&file_del=".$_GET['file_del']."\" >Bestätigen</a>";
echo "<img src=\"data/img/space.gif\" alt=\"\" width=\"50\">";
echo "<a href=\"index.php?content=files\">Abbrechen</a>";
echo "</p>\n";
echo "</div>\n";
}



?>

Wenn man bestätigt, kommt man auf die Seite content=delete_do mit dem Script :

<?php

if(!isset($_GET['file_del'])) {
echo "<p>Keine Datei ausgew&auml;hlt!</p>";
} else {
$path = "../data/content/";
$file_del_do = $path.$_GET['file_del'];
unlink($file_del_do);
echo "<div align=\"center\" >\n";
echo "<p>\n";
echo "Datei \"".$file_del."\" wurde gel&ouml;scht.<br /><br />\n";
echo "<a href=\"index.php?content=files\">Zur File&uuml;bersicht</a>";
echo "</p>\n";
echo "</div>\n";
}

?>

Die Datei test.php existiert und ist im Ordner ../data/content/. Es wird auch angezeigt, dass sie gelöscht worden ist, aber sie wurde halt nicht gelöscht. =_=

EDIT
YAAAAY, funzt!
Hatte vergessen, dem Contentordner CHMOD 777 zu geben ;_; THX @ mitaki $knuff