Изучаем PHP программирование

   Search   

Русская версия | English version   

Скрипты :: Секреты профессионалов :: Link :: FAQ   Пишите письма  



 

главная :: основы PHP

Заголовок

Проект 2: построение карты сайта Сценарий, приведенный в листинге 7.10, строит карту сайта — иерархическое изображение всех папок и файлов на сервере, начиная с заданного каталога. При вычислении отступов элементов, из которых состоит карта сайта, используются функции, определенные в этой и предыдущих главах. Прежде чем переходить к программе, просмотрите алгоритм, написанный на псевдокоде: Объявить служебные переменные для хранения родительского каталога, имени графического файла с изображением папки, названия страницы и флага серверной ОС (Windows или другая система). Объявить функцию display_directory( ), которая читает содержимое каталога и форматирует его для вывода в браузере. Построить путь к каталогу объединением имени, передаваемого в переменной $dir1, с $dir. Открыть каталог и прочитать его содержимое. Отформатировать имена каталога и файлов и вывести их в браузере. Если текущий файл является каталогом, рекурсивно вызвать функцию display_di rectory( ) и передать ей имя нового каталога для вывода. Вычислить отступ, используемый при форматировании вывода. Если файл не является каталогом, он форматируется для отображения в виде гиперссылки (а также вычисляется отступ, используемый при форматировании). Листинг 7.10. Программа sitemap.php // Файл: sitemap.php // Назначение: построение карты сайта // Каталог, с которого начинается построение карты $beg_path = "C:\Program FilesVApache Group\Apache\htdocs\phprecipes"; // Файл с графическим изображением папки. // Путь должен задаваться Относительно* корневого каталога сервера Apache $folder_location = "C:\My Documents\PHP for Programmers\FINAL CHPS\graphics\folder.gif"; // Текст в заголовке окна $page_name = "PHPRecipes SiteMap"; // В какой системе будет использоваться сценарий - Linux или Windows? // (0 - Windows; 1 - Linux) $usingjinux = 0; // Функция: display_directory // Назначение: чтение содержимого каталога, определяемого параметром // $dir1, с последующим форматированием иерархии каталогов и файлов. // Функция может вызываться рекурсивно. function display_directory ($dir1, $folder_location, $using_linux, $init_depth) { // Обновить путь $dir.= $dir1; Sdh = opendir($dir); while($file = readdir($dh)) : // Элементы каталогов "." и ".." не выводятся. if ( ($file != ".") && ($file != "..") ) : if ($using_linux == 0 ) : $depth = explode("\\", $dir): else : $depth = explode("/", $dir); endif ; $curtent_depth = sizeof( $depth); // Построить путь по правилам используемой операционной системы. if ($using_linux == 0) : $tab_depth = $current_deptn - $init_depth; $file = $dir. "\\", $file; else : $file = $dir. "/",$file; endif; // Переменная $file содержит каталог? if ( is dir($file) ) : $х = 0; // Вычислить отступ while ( $х < ($tab_depth * 2) ) : print " "; $х++; endwhile; print "\"[dir]\" ".basename($file)."
"; // Увеличить счетчик   // Рекурсивный вызов функции display_directory() display_directory($file, $folder_location, $using_linux, $init_depth); // He каталог else : // Построить путь по правилам используемой // операционной системы. if ($using_linux == 0) : $tab_depth = ($current_depth - $init_depth) - 2; $x = 0; // Вычислить отступ while ( $x < (($tab_depth * 2) + 5) ) : print " "; $x++; endwhile: print "".basename($file)."
"; else : print "".basename($file)."
"; endif: endif; // Is_dir(file) endif: // If ! "." or ".." endwhile; // Закрыть каталог closedir($dh); <? print "$page_name"; ?>

Hosted by uCoz
На рис. 7.1 изображен результат выполнения сценария для каталога с несколькими главами этой книги. Рис. 7.1. Вывод структуры каталога на сервере с использованием сценария sitemap.php

Designed by Fedin
All right reserved
2003-2004
Hosted by uCoz