unlink() Problem

e-arty

Mitglied
Hallo liebes Forum,

erneut muss ich euch mit meinem Nichtwissen behelligen.

Folgendes Script liesst die Dateien aus dem Verzeichnis aus und trägt sie in das Dropdown ein. Nun will ich über das Dropdown die Datei anwählen und dann, nach klicken auf den Entfernen-Button, diese löschen können.

Problem: Beim Klicken auf den Entfernen-Button passiert nichts.

PHP:
Datei löschen: <br><select name="quelle">
<option></option>
<?
$öffnen=opendir('./'); 
while ($file = readdir ($öffnen)) 
{ 
if ($file != "." && $file != "..") 
{ 
echo " <option value='$file'>$file\n</option>"; 
} 
}
echo "</select><br><br>";
echo "<input type='submit' name='action' value='Entfernen'>";
if ($_REQUEST['action'])
{ 
if(file_exists($quelle))
{
unlink($quelle);
echo "<script language='javascript'>alert('Datei '$quelle' wurde erfolgreich gelöscht.');</script>";
}
}
?>

Vielen Dank
 
Probier mal Folgendes:
PHP:
<?php

	$deleted = false;
	if( isset($_POST['quelle']) && ($_POST['quelle']=basename(rawurldecode($_POST['quelle']))) && file_exists(rawurldecode($_POST['quelle'])) ) {
		if( is_file($_POST['quelle']) ) {
			$deleted = unlink($_POST['quelle']);
		}
		if( is_dir($_POST['quelle']) ) {
			$deleted = rmdir($_POST['quelle']);
		}
	}
?>

	…

	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
		<p>Datei löschen:</p>
		<select name="quelle">
<?php

	$handler = opendir('./');
	while( $item = readdir($handler) ) {
		if( $item == '.' || $item == '..' ) {
			continue;
		}
		$itemgroup = is_dir($item) ? 'dir' : 'file';
		$dir_contents[$itemgroup][] = $item;
	}
	ksort($dir_contents);
	foreach( $dir_contents as $key => $itemgroup ) {
		echo '<optgroup label="' . ($key=='dir' ? 'Verzeichniss(e)' : 'Datei(en)') . '">';
		foreach( $itemgroup as $item ) {
			echo '<option value="'.rawurlencode($item).'">'.$item.'</option>';
		}
		echo '</optgroup>';
	}
	closedir($handler);

?>
		</select>
	<input type="submit" value="Entfernen">
</form>
<?php

	if( $deleted == true ) {
		echo '<p>Die Datei <code>'.$_POST['quelle'].'</code> wurde erfolgreich gelöscht.</p>';
	}

?>
 
Zuletzt bearbeitet:
Danke schonmal, Gumbo. :)
Krieg jetzt nur ne Fehlermeldung:
Warning: unlink(1): No such file or directory in /test/blabla/test.php on line 5

Werd aber weiterprobieren.
 
Es wäre noch möglich die einzelnen Elemente der beiden Gruppen alphabetisch zu sortieren, allerdings hat das bei mir aus unerklärlichen Gründen nicht funktioniert.
 
Achja, vielleicht solltest du noch folgenden Ausdruck einfügen, damit sich das Script nicht selbst löschen kann:
PHP:
<?php

	[…]
		if( $item == '.' || $item == '..' || $item == basename(__FILE__) ) {
			continue;
		}
	[…]

?>
 
Zurück