$a = getcwd();
$dir = opendir ($a);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
print "<br><a href='$file'>".$file."</a>";
}
closedir ($dir);
Он выводит мне папку сесион и я по ней перехожу и далее не чего не происходит . Я так понял нужно вставить chdir но вот и вопрос куда ? и вообще код рабочий или я точно не туда еду .
Спустя 42 минуты, 15 секунд (23.08.2010 - 15:00) waldicom написал(а):
Анализировать, что передано через $_GET и открывать именно ту директорию.
Только это опасно
Только это опасно
Спустя 27 минут, 58 секунд (23.08.2010 - 15:28) Basili4 написал(а):
$dir=opendir(isset($_GET['Path'])?$_GET['Path']:getcwd());
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
if (is_dir($file))
print "<br><a href='".$_SERVER['SCRIPT_NAME']."?Path=".$file."'>".$file."</a>";
else
print "<br>".$file;
}
closedir ($dir);
Спустя 18 минут, 26 секунд (23.08.2010 - 15:46) Rutmens написал(а):
Цитата (waldicom @ 23.08.2010 - 12:00) |
Анализировать, что передано через $_GET и открывать именно ту директорию. Только это опасно |
Почему опасно ? ты про иньекцию ? то тогда вообще не чего не передовать ?
Спустя 4 минуты, 59 секунд (23.08.2010 - 15:51) Rutmens написал(а):
Цитата (Basili4 @ 23.08.2010 - 12:28) |
$dir=opendir(isset($_GET['Path'])?$_GET['Path']:getcwd()); |
Проверил всё работает как часы !!!
Но заметил одну ошибку .. он в папку заходит .. и выводит что в нутри , а в другой папке есть ещё папка и на этом всё .. нету перехода .
Подскажи как подсчитать предыдушая была папка ... чтобы к примеру переход был такого типа .
Пример .
test | papca | moloko |
И так далие видно что я прошол по папкам ..
Спустя 26 минут, 33 секунды (23.08.2010 - 16:18) Basili4 написал(а):
<?php
$ds=isset($_GET['Path'])?$_GET['Path']:getcwd();
$dir=opendir($ds);
chdir($ds);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
if (is_dir($file))
print "<br><a href='".$_SERVER['SCRIPT_NAME']."?Path=".$file."'>".$file."</a>";
else
print "<br>".$file;
}
closedir ($dir);
?>
Спустя 13 минут, 2 секунды (23.08.2010 - 16:31) silius написал(а):
Rutmens
если тебе надо url типа http://your_site/test/papca/moloko, то лучше делай динамикой
Или я тебя не правильно понял?
если тебе надо url типа http://your_site/test/papca/moloko, то лучше делай динамикой
Или я тебя не правильно понял?
Спустя 4 дня, 4 часа, 13 минут, 5 секунд (27.08.2010 - 20:44) Rutmens написал(а):
Поточнее можно ?
Спустя 1 день, 2 часа, 19 минут, 51 секунда (28.08.2010 - 23:04) Rutmens написал(а):
Вот я набросал такой код .
А вот что мне с другого форума написали .
------------------------------------
Я Вам написал, что убрал рекурсивный вызов функции, Вы же собираетесь работать с каждым каталогом по отдельность, так зачем делать рекурсию?
Теперь делаем так
Зачем тут путь от корня сайта? Заменим это всё просто ".", что в моём понимании будет указывать на текущий каталог
Имя каталога будем передавать через $_GET
Вот эту переменную, $catalog, и передадим функции и удалим из кода рекурсивный вызов самой функции.
Получим то, что Вы хотели получить - содержимое каталога с файлами и подкаталогами.
Проверяем, если файл является каталогом, то оформляем его имя в виде ссылки
<?php
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
?>
Переменная $ses_sion будет дополнять строку запроса.
Вот весь вывод .. но я не допетриваю как это всё собрать .. помогите очень нужно решаю эту проблему не один день .
<?php
$a = $_SERVER['DOCUMENT_ROOT']."/papca/";
#$a=(isset($_GET['file']))?$_GET['file']:false;
/* объявляем функцию */
function full_dir_all($a){
$dir = opendir ($a);
while (($file = readdir($dir)) !== FALSE) {
if(is_dir($a."/".$file) && $file != '.' && $file != '..'){
echo "<a href=$file/>".$file."<a><br>";
/* рекурсивно вызываем функцию */
full_dir_all($_SESSION['$a']."/");
}
}
closedir ($dir);
}
echo full_dir_all($a);
?>
А вот что мне с другого форума написали .
------------------------------------
Я Вам написал, что убрал рекурсивный вызов функции, Вы же собираетесь работать с каждым каталогом по отдельность, так зачем делать рекурсию?
Теперь делаем так
<?php
echo $_SERVER['DOCUMENT_ROOT']."/papca/<br>";
// увидим C:/Sites/home/localhost/www/papca/
echo getcwd();
// увидим C:\Sites\home\localhost\www
?>
Зачем тут путь от корня сайта? Заменим это всё просто ".", что в моём понимании будет указывать на текущий каталог
Имя каталога будем передавать через $_GET
<?php
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
?>
Вот эту переменную, $catalog, и передадим функции и удалим из кода рекурсивный вызов самой функции.
Получим то, что Вы хотели получить - содержимое каталога с файлами и подкаталогами.
Проверяем, если файл является каталогом, то оформляем его имя в виде ссылки
<?php
echo "<a href='?catalog="$file."'>".$file."</a> (каталог)</h4>";
// Получится, что то вроде этого
// <a href='?catalog=cat_name'>cat_name</a>
?>
Если файл является файлом, то просто выведем его имя.
Но что бы переходить по ссылке, надо её дополнить именем текущего каталога. Для этого понадобится сессия, массив $_SESSION. Вот в неё и надо будет занести имя каталога в который надо попасть.
<?php
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
?>
Переменная $ses_sion будет дополнять строку запроса.
<?php
echo "<a href='?cat=".$ses_sion.$file."'>".$file."</a> (каталог)</h4>";
// Получится, что если перейти по ссылке, то увидим
// <a href='?catalog=cat_name/cat_name1'>cat_name1</a>
?>
Вот весь вывод .. но я не допетриваю как это всё собрать .. помогите очень нужно решаю эту проблему не один день .