Почему эта функция unlink не работает?

Я хочу, чтобы пользователь мог удалить файл, установив флажок и отправив форму.
Где-то в шапке:

foreach ($_POST ['files'] ['deleteFile'] as $value)
{
unlink ($value);
$fileError = '¡Éxito!';
}

Где-то в теле:

<form enctype="multipart/form-data" method="post" name="files">
<!-- No action attribute was added as the form is processed in the same file -->
<?php
foreach (glob ('files/*.*') as $file)
{
echo $file . '<input name="deleteFile" type="checkbox" value="' . $file . '">';
}
?>
<input type="submit" value="Confirmar">
</form>

-3

Решение

Потому что у вас нет ключа в $_POST суперглобальный называется files, Предполагая, что вы хотите, чтобы значения выбранных флажков были добавлены в $_POST массив, вы должны использовать следующий код:

<form method="post">
<?php
foreach (glob ('files/*.*') as $file)
{
echo $file . '<input name="deleteFile[]" type="checkbox" value="' . $file . '">';
}
?>
<input type="submit" value="Confirmar" />
</form>

Обратите внимание, что мы называем поле deleteFile[], Квадратные скобки говорят PHP обрабатывать все поля с тем же именем, что и массив. Теперь мы можем использовать foreach() перебрать каждое значение следующим образом:

foreach ($_POST['deleteFile'] as $value)
{
unlink ($value); // or you might need unlink('files/'.$value);
$fileError = '&iexcl;&Eacute;xito!';
}

Пожалуйста, имейте в виду, что вам не нужно enctype атрибут для этого типа запроса. Кроме того, PHP не похож на JS. Название формы не относится к значениям в $_POST,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]