HTML Selection auswerten + Datei im Ordner löschen

d3mueller

Mitglied
Hi ich bins mal wieder :D

Also ich möchte, das man mit einem kleinen Formular Dateien(Bilder) aus einem Ordner löschen kann.
Und zwar irgendwie so:
(Diesen Code verwende ich auch um die Bilder auszugeben. Hier habe ich nur die ausgabe( also das echo ""; ) geändert.)
PHP:
<?php
$verzeichnis = "fotos/mannschaftsfotos/";

$ordner = openDir($verzeichnis);

$bilder = array();
while ($file = readDir($ordner)) {
 	if ($file != "." && $file != ".." && !is_dir($file)) {
  		if (strstr($file, ".png") || strstr($file, ".gif") ||  strstr($file, ".jpg") ||  strstr($file, ".jpeg")) {
   			$info = getImageSize($verzeichnis . $file);
   			array_push($bilder, array(fileMtime($verzeichnis . $file) ,
    		$verzeichnis . $file , $info[0] , $info[1]));
  		}
 	}
}
closeDir($ordner);

rsort($bilder);


  echo "<form action='bilder-loeschen.php' method='POST'>";
  echo "<select name='bildnamen' size='3'>";

foreach ($bilder as $zaehlen => $element) {
 if ($zaehlen  <= 20) { 
  echo "<option value='Name des Bildes'>Name des Bildes</option>";
 }
}
  echo "<input type='submit' value='Absenden'>";
  echo "</form>";
?>
Also dort sollen halt soviele <option> generiert werden, wie Bilder im Ordner sind.
Bloss brauch ich bei jedem ja ein value, das gesendet werden kann. Es muss halt der komplette dateiname sein, inklusive Endung. Geht das irgendwie so?
PHP:
    $name = $_FILES['file']['name'];  
    $type = $_FILES['file']['type'];
Geht das? Und wie könnt ich das da oben einbauen?

Mal angenommen, das funktioniert dann. Dann kann man ja via PHP das ausgeben:


PHP:
<?php
$wahl = $_POST['auswahl']; 
echo $wahl;
?>


Jetzt kann man ja per PHP, eine Datei löschen:

PHP:
<?php
 unlink("bild.png");
?>


Man könnte dann doch einfach als Dateinamen eine Variable $wahl nehmen:


PHP:
<?php
$wahl = $_POST['auswahl']; 
unlink("fotos/mannschaftsfotos/" . $wahl);  
?>
Weil, mal angenommen, man wählt die Option "Urlaubfoto1.png" mit dem value="Urlaubfoto1.png", dann würde er ja den Pfad "fotos/mannschaftsfotos/Urlaubfoto1.png" haben und die Datei löschen.


Oder?
Denk ich hier richtig, oder hab ich was komplett falsch gemacht^^


Wenn es so geht, könnte man das ganze ja noch irgendwie erweitern:
PHP:
<?php
$wahl = $_POST['auswahl']; 

if (unlink("fotos/mannschaftsfotos/" . $wahl);) {
   echo "Erfolgreich gelöscht";
} else {
   echo "Da ist was schief gegangen";
}
?>
Geht das so?

Danke schon mal für eure Hilfe. Bin halt noch ein Anfänger in PHP, aber jeder fängt mal klein an ;)

Viele Grüße,
Dennis
 
Hi,
habe das Problem gelöst :D
Wer es wissen will:

PHP:
<?php
$verzeichnis = "fotos/mannschaftsfotos/";

$ordner = openDir($verzeichnis);

$bilder = array();
while ($file = readDir($ordner)) {
 	if ($file != "." && $file != ".." && !is_dir($file)) {
  		if (strstr($file, ".png") || strstr($file, ".gif") ||  strstr($file, ".jpg") ||  strstr($file, ".jpeg")) {
   			$info = getImageSize($verzeichnis . $file);
   			array_push($bilder, array(fileMtime($verzeichnis . $file) ,
    		$verzeichnis . $file , $info[0] , $info[1]));
  		}
 	}
}
closeDir($ordner);

rsort($bilder);
  echo "<form action='bilder-loeschen.php' method='post'>";
  echo "<select name='bildnamen' size='3' multiple>";
  $zahl = 1;
foreach ($bilder as $zaehlen => $element) {
 if ($zaehlen  <= 20) { 
  echo "<option value='" . $element[1] . "'>" . $element[1] . "</option>";
 }
}
  echo "</select>";
  echo "<input type='submit' value='Absenden'>";
  echo "</form>";
?>

und die Auswertung
PHP:
<?php
	$bildname = $_POST['bildnamen'];
	echo $bildname;
	
	if(unlink($bildname)) {
		echo "<p>Erfolgreich gel&ouml;scht</p>";
	} else {
		
		echo "Da ist was schiefgelaufen";
	}
	
?>

So scheint es zu funktionieren :D

Dennoch habe ich eine weitere Frage zu dem Thema.

Ich denke mal, so ist das nicht besonders sicher, das Skript, oder? Weil so $_POST eingaben kann man ja leicht beeinflussen. Nicht das ein Hacker mir nacher so die index.php datei löscht.
Kann man noch irgendwas hinzufügen, damit es sicherer wird? Das er so was verhindert?
Wäre nett.
Lg
Dennis
 

Neue Beiträge

Zurück