| |||||||||||||||||||||||||||||||||
Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие |
|||
| РБМК-1000 | |||
| Гражданский суда | |||
| Авиация | |||
Высшая математика |
|||
| Задачи | |||
| Практикум | |||
| Карта сайта | |||
Проект 2: построение карты сайта |
Сценарий, приведенный в листинге 7.10, строит карту сайта - иерархическое изображение всех папок и файлов на сервере, начиная с заданного каталога. При вычислении отступов элементов, из которых состоит карта сайта, используются функции, определенные в этой и предыдущих главах. Прежде чем переходить к программе, просмотрите алгоритм, написанный на псевдокоде: Объявить служебные переменные для хранения родительского
каталога, имени графического файла с изображением папки, названия страницы и флага
серверной ОС (Windows или другая система). Листинг 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 "<img src=\"$folder_location\" alt=\"[dir]\"> ".basename($file)."<br>"; // Увеличить счетчик // Рекурсивный вызов функции 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 "<a href =\ "" .$dir."\\".basename($file)."\">".basename($file)."</a> <br>"; else : print "<a href = \"".$dir."/".basename($file)."\">".basename($file)."</a> <br>"; endif: endif; // Is_dir(file) endif: // If ! "." or ".." endwhile; // Закрыть каталог closedir($dh); <html > <head> <title> <? print "$page_name"; ?> </title> </head> <body bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000" alink="#000000"> <? // Вычислить начальный отступ if ($using_linux == 0) : $depth = explode("\\", $beg_path); else : $depth = explode("/", $beg_path); endif: $init_depth = sizeof($depth); display_directory ($beg_path, $folder_location, $using_linux, $init_depth); ?> </body> </html> На рис. 7.1 изображен результат выполнения сценария для каталога с несколькими главами этой книги.
Рис. 7.1. Вывод структуры каталога на сервере с использованием сценария sitemap.php |
| На главную |