Файл index.php
Теперь можно и сканировать текущую папку. Получаем список файлов в ней (пояснения смотрите в Главе 6 – в описании сценария "Папкопотрошилка"):
$hdl=opendir($dirct); while ($file = readdir($hdl)) { if (($file!="..")&&($file!=".")) { $a[]=$file; } } closedir($hdl);
В том случае, если файлы в папке есть…
if (sizeof($a)>0) {
…отсортируем массив с их именами по алфавиту. К сожалению, при этом имена папок окажутся перемешанными с именами файлов, но делать специальную функцию сортировки пока не будем:
asort($a);
Теперь надо вывести на страницу имена файлов и папок, причем каждое имя должно быть ссылкой на соответствующий файл или папку, а перед именем должен стоять checkbox для возможности выбора соответствующих файлов и папок для совершения над ними действий.
С каждым именем файла или папки…
foreach ($a as $k) {
…поступим следующим образом.
Примечание
Оператор foreach считывает указанную в его параметрах переменную, в данном случае $к, все элементы массива, в данном случае $а, по очереди выполняя каждый раз указанный после него в фигурных скобках код, в котором может использоваться указанная переменная. Foreach будет работать только в РНР 4.0 и выше. Если вы можете использовать лишь РНР3, то вместо него можно использовать цикл for, указав в его параметрах величину массива $1.
Вначале запишем в переменную путь к данному файлу или папке – относительный от той директории, где находятся файлы самого файлового менеджера. Для этого просто прибавим имя данного файла или папки к пути к текущей директории:
$full=$dirct."/". $k;
Теперь выведем checkbox:
echo ("<input name=fl[] value=$k type=checkbox>");
При передаче формы странице-обработчику будет передан массив $fl, состоящий из значений атрибутов value отмеченных checkbox'oв (только отмеченных – неотмеченные игнорируются). А в качестве значений атрибутов value мы указываем имена файлов. Так что сценарию-обработчику будет полностью ясно, с какими файлами ему работать – путь к текущей папке будет передан в переменной в ссылке на обработчик, указанной в заголовке формы, а имена файлов передадутся в массиве $fl.
Если очередной элемент массива с именами файлов в текущей директории является папкой…
if (is__dir ($full)==True)
Примечание
Функция is_dir возвращает True, если указанный в ее параметре объект существует и является папкой.
… то выведем ссылку на нее. Вернее, не на нее, а на этот же файл нашего файлового менеджера – index.php, передав ему в качестве пути к текущей папке – в значении переменной Sfold – записанный нами ранее в переменную Sfull полный путь к данной папке:
echo ("<a href=index.php?fold=$full><b>nariKa $k</bx/a>");
Ну и укажем в качестве текста ссылки название папки, пояснив, что эта ссылка ведет именно на папку (см. рис. 11.4).