[PHP] Bild mit PHP löschen?

maxmoon

Well-known member
ID: 49665
L
28 August 2006
526
34
Hallo, ich habe ein großes Problem. Habe endlich das Script fertig, welches ich schon lange machen wollte. Es zeigt alle Bilder von 1-10 in einem bestimmten Ordner an (z.B. Bild1.gif, Bild2.gif, etc.) und wenn man draufklickt wird das angeklickte Bild vom Server gelöscht. Soweit funktioniert das Script auch aber sobald ich das Script mit include("script.php"); irgendwo einfüge, funktioniert garnichts mehr. Weder ne echo Anweisung noch sonstwas kann man da machen.

Woran liegt das? Bitte helft mir!

Code:
<?
include("config.php");
For ($i=1; $i <=10; $i++)
{
if($_GET['delete']=="Bildloeschen".$i)
{
$dateiname=$pfad."Bild".$i.".gif";
unlink($dateiname);
echo "Die Datei Bild".$i.".gif wurde gelöscht <meta http-equiv='refresh' content='2; url=admin.php'>";
}else{
echo "<a href='?delete=Bildloeschen".$i."'><img src='".$pfad."Bild".$i.".gif'/></a> ";
}
}
?>
 
:arrow: Programmierung

Bekommst du dennnicht mal ne Fehlerausgabe? Wenn nein, mach mal error_reporting(E_ALL); an den Anfang der Datei rein.
 
An der config.php liegt´s ja nicht. Da steht eh nur der Pfad --> Bilder/ <-- drinnen. Das Script funktioniert ja, wenn ich es direkt aufrufe, doch wenn ich es im include abspiele, dann geht´s nicht mehr.

Fehlermeldungen kommen auch nicht!!!

Mir ist jetzt aufgefallen, dass in Zeile 11, bei ?delete=Bildloeschen$i genau dieses in die Adresszeile übergeben wird. Das ist jedoch falsch, weil die offene Datei admin.php ist und somit admin.php?delete=Bildloeschen$i angezeigt wird. Der soll aber delete in der eigenen Datei übergeben, also script.php?delete=Bildloeschen$i. Wenn ich also script.php?delete=Bildloeschen$i da hin schreibe, gibt er mir in der Adresszeile trotzdem admin.php?delete=Bildloeschen$i.

Ist es überhaupt möglich beim include-Befehl noch Variablen über Links zu übergeben?
Habt ihr evtl. andere Lösungsvorschläge?

Für eure Hilfe bedanke ich mich.

/*
huch! Bin User of the day ^^
Weiss zwar nicht was das bringen soll und warum mich die Leute darauf aufmerksam machen... aber ok :)
*/
 
Zuletzt bearbeitet:
Mir ist auch grad aufgefallen das Dein Code bisschen seltsam aufgebaut ist wie ich finde. Probier mal folgendes:
PHP:
<?
include("config.php");
if(isset($_GET['delete']) && is_int(substr($_GET['delete'], 12)))
{
   $dateiname=$pfad."Bild".substr($_GET['delete'], 12).".gif";
   if(unlink($dateiname))
      echo "Bild efolgreich gelöscht <meta http-equiv='refresh' content='2; url=admin.php'>";   // so eine weiterleitung hat hier normal nix zu suchen
   else
      echo "Bild konnte nicht gelöscht werden";
}

for($i=1; $i <=10; $i++)
{
   echo "<a href='/script.php?delete=Bildloeschen".$i."'><img src=\"".$pfad."Bild".$i.".gif\" alt=\"\" /></a> ";
}
?>

so würde ich es machen, zumindest so in der Art. Evtl. solltest du keine for-schleife nehmen sondern eher das Verzeichnis auslesen weil wenn du Bild1 bis Bild10 hast und löscht die 9 wird die 9 trotzdem wieder beim nächsten mal angezeigt, aber das kannst du ja selber implementieren.

*edit ich merke grd der code haut so net hin.

Jetzt sollte es passen.
 
Zuletzt bearbeitet:
Vielen Dank für die Mühe, doch es funktioniert immer noch nicht. Das Problem ist noch das gleiche. Anstatt script.php?delete=Bild1 beim Klicken zu senden, steht da, wie schon oben genannt, admin.php?delete=Bild1.

Es muss am Include-Befehl liegen, weil wenn man das Script direkt ausführt, funktioniert es, beim includen jedoch nicht.

Bin langsam verzweifelt!

P.S.: Hast übrigens recht! Ich sollte lieber gleich den ganzen Ordner auslesen, somit erspar ich mir auch drauf zu achten, wie die Bilder heißen.
 
Kennt jemand eine Lösung wie ich Links mit "?xxx=xxx" trotz include-Befehl benutzen kann?
 
Wenn die admin.php udn die script.php im selben Ordner liegen also im Rootverzeichnis dann nimm nochmal das obige Script. Habe es editiert, es ist alles noch das gleiche nur ein / vor dem script.php is drin. Das bedeutet das die löschfunktion nun auf die https://deine_domain.tdl/script.php?.... geht egal woher der include kam.

Nun muss es funktionieren, trotzdem komm ich bei dem Code kaum mit das ist alles unlogisch :-?.
 
Wenn die admin.php udn die script.php im selben Ordner liegen also im Rootverzeichnis dann nimm nochmal das obige Script. Habe es editiert, es ist alles noch das gleiche nur ein / vor dem script.php is drin. Das bedeutet das die löschfunktion nun auf die https://deine_domain.tdl/script.php?.... geht egal woher der include kam.

Nun muss es funktionieren, trotzdem komm ich bei dem Code kaum mit das ist alles unlogisch :-?.

Bei was genau kommst du nicht mit?

Habe nun alles ganz anders gemacht. Anstatt eine Forschleife zu nehmen und alle Bilder mit Bild1, Bild2, etc. zu benennen, habe ich nun den ganzen Ordner ausgelesen, das ist viel einfacher und komfortabler. Dann habe ich den Befehl für´s Löschen einfach in die admin.php geschrieben. Jetzt funktioniert alles! Ist zwar nicht die beste Lösung, doch wenn ich mit meinem Hauptprojekt anfange, weiss ich´s am besten.

Learning by doing! ^^ <-- Das Motto hilft eigentlich immer.