[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как запустить файл из папки
bal
Всем здравствуйте!
Возник вопрос, как можно передвигаться по папкам и запустить (открыть)
файл в заданной папке?
Допустим в папке 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
DirectoryIndex index.html
Правда, сработает это если в настройках апача указано AllowOverride All к примеру.

Спустя 15 минут, 24 секунды (3.08.2010 - 22:00) bal написал(а):
Цитата (linker @ 3.08.2010 - 18:45)
То, что показывает листинг директорий - это плохо (отключается Options -Indexes), смотрите что у вас в настройках сервака в параметре DirectoryIndex. Накрайняк в папке 2 создайте .htaccess с содержимым
Options -Indexes
DirectoryIndex index.html
Правда, сработает это если в настройках апача указано 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]);
echo '">' . $dir[$i] . "</a><br>\n";

Не работае.
Пишет, что не может найти папку (путь).

Спустя 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, то выводи его на экран.

А как это сделать?
Если можно пример плз.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.