Иллюстрированный самоучитель по PHP

Файл do.php

Сначала создадим в папке назначения копирования папку с таким же именем, что и имя копируемой папки. Естественно, если там таковой еще нет:

if (file_exists($tgt."/".$nm)!=True)
mkdir ($tgt."/".$nm, 0666);

Примечание
Команда mkdir (имя новой папки вместе с путем к ней, параметры доступа) создает новую папку. Если создать папку невозможно (например, уже есть папка с таким именем), то выдается сообщение об ошибке
.

Параметры доступа, или атрибуты файла или папки – это восьмеричное число, сообщающее web-серверу о том, что можно делать с файлом, которому эти параметры установлены. Например позволить его читать только другим сценариям на том же аккаунте, но не посетителям из Сети. Узнать о соответствии значений параметров доступа их восьмеричному представлению можно, например в FTP-клиенте CuteFTP, воспользовавшись его окном выставления атрибутов файла (рис.11.11), доступном через пункт "Chmod" меню правой кнопки мыши любого файла на сайте. "Owner permissions" – это раз решения для других программ на том же аккаунте, a "Public permissions" – для посетителей из Интернета. Вы можете разрешить или запретить три вида действий: чтение, запись и запуск на исполнение (последнее имеет смысл только для программ).

Иллюстрированный самоучитель по PHP › Файловый менеджер › Файл do.php
Рис. 11.11. "Калькулятор параметров доступа" из CuteFTP

Теперь начнем копировать файлы из исходной папки в новосозданную (используем старый добрый сценарий "папкопотрошилки"): исходная папка при этом – $f Id. " /". $шп, а новосозданная – $tgt."/".$nm.

$hdl=opendir($fld."/".$nm);
while ($file = readdir($hdl)) { if (($file!="..")&&($file! = "."))

Если очередной объект из "потрошимой" папки $fId. " / ". $nm – директория…

if (is_dir($fld."/".$nm."/".$file)==True) {

… то применим рекурсию – вновь вызовем функцию соруfold, только параметры ей уже передадим несколько другие:

copyfold($fld."/".$nm, $file, tgt."/".$nm);

Другими словами, в качестве имени копируемой папки – указываем имя очередного обьекта, найденного в "потрошимой" папке. Остальные передаваемые функции параметры представляют собой соответственно имя "родительской" папки для копируемой (это имя "потрошимой" папки), имя папки назначения (составлено из исходного имени папки назначения и имени копируемой папки, эта папка, кстати, как вы, наверное, помните, была создана командой mkdir в начале работы функции).

Если же очередной объект из "потрошимой" папки $f Id." /". $nm является обычным файлом…

}
else
{

…то просто скопируем его из исходной папки в папку назначения – и дело с концом.

copy ($fld."/".$nm."/".$file, $tgt."/".$nm."/".$file);

Примечание
Функция copy (исходный файл, файл на месте назначения) копирует файл, полный путь к которому указан в первом параметре, в тот файл, полный путь к которому указан во втором параметре. Если копирование не удается, то функция выводит сообщение об ошибке (можно отключить, поместив символ @ перед командой) и возвращает false
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.