Вам нужно дать вашим входам значение
<input type='checkbox' name='checked[]' value='{$key}'>
Вот некоторый код, который направит вас в нужном направлении.
$files = glob('fajlovi/*');
$indicesToDelete = array_intersect((array)($_POST['checked'] ?? []), array_keys($files));
foreach ($indicesToDelete as $index) {
if (unlink($files[$index])) {
echo "Successfully deleted file" . $files[$index] . "<br>";
}
}
Я бы не стал реализовывать удаление как это все же. Вместо использования индексов, предоставляемых glob()
, в качестве метода поиска файлов для удаления, вы должны использовать ключ, который однозначно и однозначно идентифицирует файл. По крайней мере, это означает использование самого пути к файлу . Рассмотрим, например, сценарий, в котором добавляются файлы или файлы, которые удаляются между отображением формы и выбором и отправкой выбора для удаления. Вы можете удалить неправильные файлы.
Вместо этого вы можете указать здесь путь к файлу:
<input type='checkbox' name='checked[]' value='{$value}'>
И затем работать с ними вместо индексов.
$files = glob('fajlovi/*');
$pathsToDelete = array_intersect((array)($_POST['checked'] ?? []), $files);
foreach ($pathsToDelete as $filepath) {
if (unlink($filepath)) {
echo "Successfully deleted file" . $files[$index] . "<br>";
}
}
В качестве последнего совета:
- Вы должны проверить
file_exists()
, is_file()
или аналогичный перед тем, как выполнить отмену связи. Вы должны делать все возможное, чтобы разрешить удаление только тех файлов, которые вы хотели.