Grafiken löschen

Status
Nicht offen für weitere Antworten.
Mh aller Anfang ist schwer aber du solltest noch einmal die Grundlagen Tutorials anschauen und vor allem bitte mal die Code beiträge der anderen lesen denn im Beitrag #12 hat timestamp schon erklärt wie du es machen musst.

Ich geb dir dieses mal die Lösung direkt weil ich es dir nachfühlen kann ging mir Anfangs auch so.
Aber Cromon hat recht eigentlich solltest du durch nachdenken drauf kommen.
PHP:
<?php 
if( isset($_GET["img"]) ){
   if(file_exists("/pfad/zu/deinen/bildern/".$_GET["img"]))
      unlink("/pfad/zu/deinen/bildern/".$_GET["img"]);
}  
?>

Allerdings ist das so ohne Passwortschutz eine unsichere Sache denn damit kann jeder deine Bilder löschen.

Danke aber die Grafik die ich löschen möchte wird nicht gelöscht. Muss das Skript im selben Verzeichniss wie die Grafiken sein?
 
nö eigentlich nicht nur die pfadangabe muss stimmen.
Das ist ein wenig gefrickel wenn man sich da noch nicht genau auskennt aber ich kann dir da wenig zu sagen da ich nicht weis auf was für einem system dein script liegt.
 
Ja das stimmt aber soll ich deswegen jetzt kurz vorm Ziel aufgeben? xD

So geht es leider auch nicht:
PHP:
<?php 
if( isset($_GET["img"]) ){
   if(file_exists($_GET["img"]))
      unlink($_GET["img"]);
}  
?>

Kannst du mir dabei helfen das der Löschfunktion-Code in der selben Datei ist wie die "Galerie"?

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>KG</title>
</head>
<body>


<?php
// Bilder aus einem Verzeichnis auslesen
// und sortiert in einer Tabelle anzeigen
$bilderliste = array();
$verzeichnis = "../images/KG/";
$handle = openDir($verzeichnis);
while ($datei = readDir($handle)) {
 $verzeichnis_datei = $verzeichnis . $datei;
 if ($datei != "." && $datei != ".." && !is_dir($datei)) {
  if (strstr($datei, ".gif") || strstr($datei, ".png") || strstr($datei, ".jpg")) {
   $info = getimagesize($verzeichnis_datei);
   array_push($bilderliste, array(filemtime($verzeichnis_datei) , $verzeichnis_datei , $info[0] , $info[1]));
  }
 }
}
closeDir($handle);

rsort($bilderliste);

echo <<<EOT
<table align="center" border="1">
 <tr>
  <td>Grafik</td> <td>Dateiname</td> <td>Datum</td> <td>Maße</td> <td>Löschen</td>
 </tr>
EOT;

foreach ($bilderliste as $zaehler => $element) {
 echo "<tr>";
 echo "<td align=left><img src=\"" . $bilderliste[$zaehler][1] . "\" width=\"" . $bilderliste[$zaehler][2] . "\" height=\"" . $bilderliste[$zaehler][3] . "\" alt=\"\"></td >";
 echo "<td align=left>" . str_replace($verzeichnis, "", $bilderliste[$zaehler][1]) . "</td>";
 echo "<td align=left>" . date("d.m.Y H:i", $bilderliste[$zaehler][0]) . "</td>";
 echo "<td align=left>" . $bilderliste[$zaehler][2] . " x ". $bilderliste[$zaehler][3] . "</td>";
echo "<td align=left><a style=\"color:blue;\" href=\"./delete.php?img=".$bilderliste[$zaehler][1]."\">Bild löschen</a></td>";  
 echo "</tr>";
}
echo "</table>";
?>

</body>
</html>

Info:

Dieses Skript liegt hier:
/admin/

Die Grafiken sind hier:
/images/KG/

deswegen habe ich auch im skript "../images/KG/" eingetragen. die zwei pünktchen sollen wohl bedeuten dass das skript weiss es muss zurück zum root um das verzeichniss zu finden. total kompliziert.
 
Ja das stimmt aber soll ich deswegen jetzt kurz vorm Ziel aufgeben? xD
das hab ich nicht gesagt und nicht gemeint.

So geht es leider auch nicht:
PHP:
<?php 
if( isset($_GET["img"]) ){
   if(file_exists($_GET["img"]))
      unlink($_GET["img"]);
}  
?>
Dann versuch mal ein neues Script (im Ordner admin) um den Pfad heraus zu finden:
PHP:
$filename = '../images/KG/KG1235fgvrf.png';

if (file_exists($filename)) {
    print "The file $filename exists";
} else {
    print "The file $filename does not exist";
}
Das sollte funktionieren....



Kannst du mir dabei helfen das der Löschfunktion-Code in der selben Datei ist wie die "Galerie"?
eins nach dem anderen.

deswegen habe ich auch im skript "../images/KG/" eingetragen. die zwei pünktchen sollen wohl bedeuten dass das skript weiss es muss zurück zum root um das verzeichniss zu finden. total kompliziert.
Nicht kompliziert sondern logisch.
".../" ist die Pfadangabe für ein Ordner aufwärts.
 
Man kann die Lösch-Funktion nicht in die gleiche Datei packen! Willst Du wissen warum? php ist eine serverseitige Sprache, heisst also, bevor Du die Seite zu sehen bekommst, werden alle Aufgaben schon gelöst sein. Da Du aber eine Aufgabe auslösen möchtest (nämlich löschen), musst Du das mit einem Link machen, welche wiederum jene Aufgabe (richtig, serverseitig..) in einem Script ausführt.

Zwei Pünktchen heisst, eine Ordnerebene hochspringen, nicht zwingend nach root. Es tut mir leid, die Lösungen liegen vor Deiner Nase und es scheint irgendwas mit der Ordnerstruktur/Dateinamen nicht zu stimmen. Nun musst Du ein bisschen analytische Arbeit auf Dich nehmen und schauen, welcher Bild-Link von php im obigen script erstellt wird (einfach in den Quellcode schauen) und ob er (inklusive Ordnerzugriff) richtig ist.

Nachdem Du das zum Laufen gekriegt hast, empfehle ich Dir dringend, irgendeine Schutzmaßnahme einzubauen (Passwortabfrage oder sessionbasiert), ansonsten bin ich in der Lage, alle Bilder zu löschen, die dort aufbewahrt sind. Nicht nur ich, alle Scriptkiddies, die Deinen Host mißbrauchen/nötigen wollen.

mfg chmee
 
Ok ich habe also eine neue PHP-Datei erstellt:

test.php
PHP:
<?php
$filename = '../images/KG/KG1235fgvrf.png';

if (file_exists($filename)) {
    print "The file $filename exists";
} else {
    print "The file $filename does not exist";
}  
?>

Ich habe die Datei im Browser ausgeführt und dan kam die Meldung:
The file ../images/KG/KG1235fgvrf.png exists


Edit:
Nachdem Du das zum Laufen gekriegt hast, empfehle ich Dir dringend, irgendeine Schutzmaßnahme einzubauen (Passwortabfrage oder sessionbasiert), ansonsten bin ich in der Lage, alle Bilder zu löschen, die dort aufbewahrt sind. Nicht nur ich, alle Scriptkiddies, die Deinen Host mißbrauchen/nötigen wollen.

das skript ist mit htaccess geschützt.
 
Gut dann schau mal ob beim Aufruf deines löschscript das selbe steht wenn du es so änderst:
PHP:
<?php 
if( isset($_GET["img"]) ){
   echo "L&ouml;sche folgendes Bild: ".$_GET["img"];
   if(file_exists($_GET["img"])) {
      unlink($_GET["img"]);
   }
}  
?>
 
Da steht:

Lösche folgendes Bild: ../images/KG/KG-AGH-6874 A B 3.png

Erklärung:
Die Grafik heisst eigentlich: KG-AGH-6874+A+B+3.png aber die + Zeichen werde nicht angezeigt und die datei wird auch nicht gelöscht. der ordner hat 777 rechte.
 
Status
Nicht offen für weitere Antworten.
Zurück