Приднестровская поддержка XOOPS
Создаем программу для просмотра всех доступных каталогов и файлов на диске
Для работы с каталогами используются следующие функции:
□ mkdir(<Имя каталога>, <Права доступа>) создает новый каталог с правами доступа, указанными во втором параметре. Права доступа указываются в виде трехзначного числа, перед которым указывается 0. Например, 0755;
□ rmdir(<Имя каталога>) удаляет пустой каталог. Если в каталоге есть файлы, то каталог удален не будет;
□ getcwd() возвращает текущий каталог;
□ chdir(<Имя каталога>) делает указанный каталог текущим;
□ opendir(<Имя каталога>) открывает каталог для чтения. Функция возвращает дескриптор, который указывается в других функциях;
□ readdir(<Дескриптор>) считывает следующее имя объекта (файла или подкаталога);
□ closedir(<Дескриптор>) закрывает каталог;
□ rewinddir(<Дескриптор>) перемещает указатель в начало каталога;
□ is_dir(<Объект>) возвращает true, если объект является каталогом;
□ is_file(<Объект>) возвращает true, если объект является файлом.
Прочитаем содержимое каталога C:\Apache2\htdocs и выведем содержимое каталога в окно Web-браузера. Каталоги и файлы выведем отдельно, а для файлов укажем размер, дату создания и дату изменения файла. Кроме того, добавим возможность перемещения по файловой системе с помощью гиперссылок и предусмотрим возможность использования русских букв в названиях каталогов и файлов. Для этого создадим два файла: dir_script.php (листинг 50) и dir.php (листинг 51).
Листинг 50. Содержимое файла dir_script.php
<?php
function f_url_new($path) {
$Mass = explode('/', $path);
if (count($Mass)>1) {
array_pop($Mass); // Удаляем последний элемент
return implode('/', $Mass);
}
else return '';
}
function f_read_dir($path, &$d, &$f) {
$descr = @opendir($path); // Открываем каталог
if ($descr) {
chdir($path); // Делаем каталог текущим
while ($obj = readdir($descr)) {
if (is_dir($obj)) { // Если это каталог
if ($obj != '.') {
$d[] = $obj;
}
}
if (is_file($obj)) { // Если это файл
$size = filesize($obj);
$cdate = date('d-m-Y', filectime($obj));
$mdate = date('d-m-Y', filemtime($obj));
$f[] = array($obj, $size, $cdate, $mdate);
}
}
closedir($descr); // Закрываем каталог
}
else exit('Не удалось открыть каталог');
}
?>
Листинг 51. Содержимое файла dir.php
<?php
require_once('dir_script.php');
$dir = array();
$files = array();
//Задаем путь по умолчанию
if (!isset($_GET['path'])) $path = 'C:/Apache2/htdocs';
else $path = $_GET['path'];
if (strlen($path)==0) exit('Не задан путь');
// Получаем файлы и папки текущего каталога
f_read_dir($path, $dir, $files);
$path2 = f_url_new($path);
// Кодируем все спецсимволы
$path = urlencode($path);
$path2 = urlencode($path2);
// Выводим содержимое каталога
?>
<table cellspacing="0" cellpadding="5" border="0" width="100%">
<tr><td width="25%">
<h2 align="center">Каталоги</h2>
</td><td>
<h2 align="center">Файлы</h2>
</td></tr>
<tr><td valign="top">
<?php
for ($i=0, $c=count($dir); $i<$c; $i++) {
if ($dir[$i] == '..') {
echo '<a href="?path=' . $path2 . '">На уровень выше</a><br><br>';
}
else {
echo '<a href="?path=' . $path . urlencode('/' . $dir[$i]);
echo '">' . $dir[$i] . "</a><br>\n";
}
}
?>
</td><td valign="top">
<table cellspacing="0" cellpadding="5" border="1" width="100%">
<tr align="center">
<td width="25%">Название файла</td>
<td width="25%">Размер файла</td>
<td width="25%">Дата создания файла</td>
<td width="25%">Дата последнего изменения</td>
</tr>
<?php
// Выводим названия файлов
for ($k=0, $c=count($files); $k<$c; $k++) {
echo '<tr align="center">';
echo '<td>' . $files[$k][0] . "</td>\n";
echo '<td>' . $files[$k][1] . "</td>\n";
echo '<td>' . $files[$k][2] . "</td>\n";
echo '<td>' . $files[$k][3] . "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
if (count($files)==0) {
echo '<div style="text-align: center"><b>Нет файлов</b></div>';
}
?>
</td></tr></table>
Откроем в Web-браузере файл dir.php. В результате отобразится содержимое каталога C:\Apache2\htdocs. С помощью гиперссылок можно перемещаться между каталогами, отображая их содержимое, почти как в программе Проводник в Windows.
Отправитель | Нити |
---|
5 пользователь(ей) активно (3 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 5 далее... |