П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 174944 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 71862 раз(а).

Учебник HTML.
Просмотров 72021 раз(а).

Руководство по PHP5.
Просмотров 42629 раз(а).

Хостинг через призму DNS.
Просмотров 49089 раз(а).

Подборка текстов стандартных документов.
Просмотров 43046 раз(а).

Учебник PHP - Самоучитель
Просмотров 49391 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 49625 раз(а).

Внешние атаки...
Просмотров 40178 раз(а).

Учебник PHP.
Просмотров 35203 раз(а).

SSI в примерах.
Просмотров 26510 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




ГЛАВА 7. Файловый ввод/вывод и файловая система

Проект 2: построение карты сайта

Сценарий, приведенный в листинге 7.10, строит карту сайта — иерархическое изображение всех папок и файлов на сервере, начиная с заданного каталога. При вычислении отступов элементов, из которых состоит карта сайта, используются функции, определенные в этой и предыдущих главах. Прежде чем переходить к программе, просмотрите алгоритм, написанный на псевдокоде:

  1. Объявить служебные переменные для хранения родительского каталога, имени графического файла с изображением папки, названия страницы и флага серверной ОС(Windows или другая система).
  2. Объявить функцию display_directory(), которая читает содержимое каталога и форматирует его для вывода в браузере.
  3. Построить путь к каталогу объединением имени, передаваемого в переменной $dir1, с $dir.
  4. Открыть каталог и прочитать его содержимое. Отформатировать имена каталога и файлов и вывести их в браузере.
  5. Если текущий файл является каталогом, рекурсивно вызвать функцию display_directory() и передать ей имя нового каталога для вывода. Вычислить отступ, используемый при форматировании вывода.

Если файл не является каталогом, он форматируется для отображения в виде гиперссылки(а также вычисляется отступ, используемый при форматировании).

Листинг 7.10. Программа sitemap.php

// Файл: sitemap.php
// Назначение: построение карты сайта
// Каталог, с которого начинается построение карты
$beg_path = "C:\Program Files\ApacheGroup\Apache\htdocs\phprecipes";

// Файл с графическим изображением папки.
// Путь должен задаваться Относительно* корневого каталога сервера Apache
$folder_location = "C:\My Documents\PHP for Programmers\FINALCHPS\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;
  $dh = 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 "&nbsp;";
          $х++;
        endwhile;

        print "<img src=\"$folder_location\" alt=\"[dir]\">".basename($file)."<br>";

        // Увеличить счетчик &nbsp;
        // Рекурсивный вызов функции 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 "&nbsp;";
            $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

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru