Я хочу, чтобы пользователь мог удалить файл, установив флажок и отправив форму.
Где-то в шапке:
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>
Потому что у вас нет ключа в $_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 = '¡Éxito!';
}
Пожалуйста, имейте в виду, что вам не нужно enctype
атрибут для этого типа запроса. Кроме того, PHP не похож на JS. Название формы не относится к значениям в $_POST
,
Других решений пока нет …