Файл zapros.php
Как же принцип рекурсии можно использовать для построения списка всех папок на аккаунте? А алгоритм построения этого списка при использовании рекурсии прост:
- Получить список файлов и папок в текущей директории.
- Перебирать элементы из этого списка по одному.
- Если очередной элемент – директория, то вывести на страницу ее имя и выполнить этот алгоритм по отношению к этой директории, посчитав ее текущей.
Этот алгоритм следует реализовать в специальной функции – подпрограмме, которую можно вызывать по имени, передав ей при этом необходимую для работы информацию.
К данной последовательности действий можно сделать лишь одно дополнение: если в списке копируемых объектов есть папки, то из выводимого списка директорий должны быть исключены как сами эти папки, так и все вложенные в них. Данное требование довольно понятно – скопировать папку во вложенную в нее папку невозможно. Ну и, естественно, в список папок для копирования не должна попасть та папка, в которой копируемые файлы находятся – как можно файл скопировать сам на себя?
Остальные же действия кода, посвященного запросу подтверждения копирования файлов, те же самые, что и для кода удаления файлов и папок: вывести список копируемых объектов и кнопку подтверждения выбора действия.
Начало кода:
if ($copy!="") {
Для удобства запишем в переменную название корневой папки аккаунта пользователя. Впоследствии мы будем ее неоднократно использовать в коде.
$begin="files";
Выводим запрос пользователю…
echo ("Объекты для копирования:<br>");
…и, точно так же, как в блоке кода, посвященном удалению файлов, выводим список объектов, подлежащих копированию (сравните – код практически такой же):
foreach ($fl as $i) { echo ("<input type=hidden name=fl[] value=$i>$folder/$i<br>");
Еще один запрос…
echo ("<bг>Выберите папку для копирования:<br>");
…и начинаем вывод дерева папок – вызываем функцию tree.
tree($begin);