Возник вопрос, как можно передвигаться по папкам и запустить (открыть)
файл в заданной папке?
Допустим в папке 1 лежит папка 2. а в ней index.html
Как сделать, чтоб при обращении к папке 2 открывался index.html ?
Откопал такой код, работает нормально,
но не так как мне надо. Просто обзор папок и файлов.
Помогите его переделать плз.
Названия файлов выводить не надо.
Содержимое файла 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('Не удалось открыть каталог');
}
?>
Содержимое файла dir.php
<?php
require_once('dir_script.php');
$dir = array();
$files = array();
//Задаем путь по умолчанию
if (!isset($_GET['path'])) $path = 'C:/1/';
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>
Спустя 28 минут, 23 секунды (3.08.2010 - 16:25) arvitaly написал(а):
Цитата |
запустить (открыть) файл в заданной папке? |
Что это значит?
Спустя 35 минут, 53 секунды (3.08.2010 - 17:01) bal написал(а):
Цитата (arvitaly @ 3.08.2010 - 13:25) | ||
Что это значит? |
Открылся в броузере.
Спустя 3 часа, 52 минуты, 57 секунд (3.08.2010 - 20:54) linker написал(а):
Если у вас настроенный апач, то index.html отобразится по-любому. Не понятно какие проблемы.
Спустя 39 минут, 3 секунды (3.08.2010 - 21:33) bal написал(а):
Цитата (linker @ 3.08.2010 - 17:54) |
Если у вас настроенный апач, то index.html отобразится по-любому. Не понятно какие проблемы. |
Всё правильно. Имена Файлов показывет.
А мне надо, чтоб он открылся (веб страница).
Спустя 11 минут, 51 секунда (3.08.2010 - 21:45) linker написал(а):
То, что показывает листинг директорий - это плохо (отключается Options -Indexes), смотрите что у вас в настройках сервака в параметре DirectoryIndex. Накрайняк в папке 2 создайте .htaccess с содержимым
Options -IndexesПравда, сработает это если в настройках апача указано AllowOverride All к примеру.
DirectoryIndex index.html
Спустя 15 минут, 24 секунды (3.08.2010 - 22:00) bal написал(а):
Цитата (linker @ 3.08.2010 - 18:45) |
То, что показывает листинг директорий - это плохо (отключается Options -Indexes), смотрите что у вас в настройках сервака в параметре DirectoryIndex. Накрайняк в папке 2 создайте .htaccess с содержимымOptions -IndexesПравда, сработает это если в настройках апача указано AllowOverride All к примеру. |
Вы меня не правильно поняли.
Этот код (который я привел) и должен так работать, показывать
папки и их содержимое, а мне нужно, чтоб при открытии определенной
папки открывался находящийся в ней index.html (т.е. выводилось на экран его содержимое веб страница), а не выводилось его имя.
Вы запустите это код и посмотрите как он работае.
Это навигация по папкам.
Спустя 18 минут, 51 секунда (3.08.2010 - 22:19) linker написал(а):
ну выводите файлы ссылкой
<a href="путь к файлу"></a>или я вообще запутался чего вы хотите на самом деле.
Спустя 1 минута, 18 секунд (3.08.2010 - 22:20) arvitaly написал(а):
Т.е. Вам надо чтобы папка была обычной ссылкой на обычный html-файл, ничего не понятно
Спустя 15 минут, 18 секунд (3.08.2010 - 22:35) bal написал(а):
Цитата (arvitaly @ 3.08.2010 - 19:20) |
Т.е. Вам надо чтобы папка была обычной ссылкой на обычный html-файл, ничего не понятно |
Да. При попытке открыть папку в которой есть index.html,
чтобы не папка открывалась, а index.html.
Спустя 16 минут, 56 секунд (3.08.2010 - 22:52) arvitaly написал(а):
<a href="путь к папке"></a> и так откроется файл
Спустя 9 минут, 38 секунд (3.08.2010 - 23:02) bal написал(а):
Цитата (arvitaly @ 3.08.2010 - 19:52) |
<a href="путь к папке"></a> и так откроется файл |
А в каком месте кода это вставить?
Спустя 2 минуты, 46 секунд (3.08.2010 - 23:05) arvitaly написал(а):
echo '<a href="?path=' . $path . urlencode('/' . $dir[$i]);
echo '">' . $dir[$i] . "</a><br>\n";
По идее вместо этого надо просто
echo '<a href="/' . $path . urlencode('/' . $dir[$i]);
echo '">' . $dir[$i] . "</a><br>\n";
Спустя 6 минут, 16 секунд (3.08.2010 - 23:11) bal написал(а):
Цитата (arvitaly @ 3.08.2010 - 20:05) |
echo '<a href="/' . $path . urlencode('/' . $dir[$i]); |
Не работае.
Пишет, что не может найти папку (путь).
Спустя 8 часов, 43 минуты, 7 секунд (4.08.2010 - 07:54) linker написал(а):
Перед тем как выводить содержимое каталога, проверяй содержимое своего массива $files, если там есть index.html, то выводи его на экран.
Спустя 52 минуты, 12 секунд (4.08.2010 - 08:46) bal написал(а):
Цитата (linker @ 4.08.2010 - 04:54) |
Перед тем как выводить содержимое каталога, проверяй содержимое своего массива $files, если там есть index.html, то выводи его на экран. |
И как это сделать?
Если можно пимер плз.
Спустя 13 минут, 50 секунд (4.08.2010 - 09:00) bal написал(а):
Цитата (linker @ 4.08.2010 - 04:54) |
Перед тем как выводить содержимое каталога, проверяй содержимое своего массива $files, если там есть index.html, то выводи его на экран. |
А как это сделать?
Если можно пример плз.