За последние 24 часа нас посетили 18698 программистов и 1650 роботов. Сейчас ищут 959 программистов ...

Помогите с адресной строкой

Тема в разделе "PHP для новичков", создана пользователем mifitator, 15 сен 2014.

  1. mifitator

    mifitator Новичок

    С нами с:
    11 сен 2014
    Сообщения:
    11
    Симпатии:
    0
    В общем нужно через $_GET ходить внутрь локальных папок. (упражнение на scandir() ,is_dir())
    Код который я сделал работает только на 1 уровень,то есть входит в папку -показывает содержимое но не анализирует его и следующую папку соотвт-нно не определяет. Покажите как нужно сделать,что б все было ок плиз..
    Код (Text):
    1.  
    2. <?php
    3.  
    4. error_reporting(-1);
    5. header('Content-Type: text/html; charset=utf-8');
    6. if (!isset($_GET['page'])) $_GET['page']='.';
    7.  
    8. /*Сканируем текущий каталог*/
    9. $files=scandir($_GET['page']);
    10.  
    11. ?>
    12.  <ul>
    13. <?php
    14.  
    15. foreach($files as $v){
    16.     /*Ищем папки*/
    17.     if (is_dir($v)){
    18.  
    19.          /* Делаем папки кликабельной и вводим переменную $link*/
    20.  
    21.         $path="<a href=".$_SERVER['PHP_SELF'].'?page='.$v.'&link'.">".$v."</a>";
    22.  
    23.          /*Добавляем иконку папки*/
    24.  
    25.         $v="<img src='img/pp.jpg'>".$path;
    26.  
    27.          /*Если кликнули то $link - должна сканироваться папка куда зашли - Не работает ((*/
    28.  
    29.         if(isset($link)){
    30.             $_GET['page']=$v;
    31.         }
    32.     }
    33.     echo "<li>$v</li>";
    34. }
    35.  
    36. ?>
    37. </ul>
    Не могу до конца разобраться с этими адресами.Что куда нужно?.Помогите пожалуйста.
     
  2. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Сканирует папки, входит в подпапки, но внутри не все определяет как папки
    Скрипт в другом каталоге при переходе, т.е. видимо надо менять каталог chdir

    Собственно, при переходе по ссылке
    echo getcwd() . "\n";
    перешли и проверяем, видим подкаталог, но getcwd показывает что мы в родительской директории, что вполне справедливо.

    Т.е. вот так работает:

    if(isset($link)){
    $m= getcwd() . "\n";
    chdir("./somedir");
    $_GET['page']=$v;

    Только вместо somedir надо подставить переменную.Правда, как!? Поскольку цикл отрабатывает и $v хранит последнее значение, то по всем папкам погулять не получится.
     
  3. mifitator

    mifitator Новичок

    С нами с:
    11 сен 2014
    Сообщения:
    11
    Симпатии:
    0
    Да, я понимаю почему так происходит, поэтому и спросил у народа что нужно дописать..

    Может в Принципе нужно по другому делать ?

    Как то все таки это реализовать то можно
     
  4. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Это все неправильные вещи, конечно.
    Но вот так у меня работает:
    Код (Text):
    1.         if(isset($link)){
    2.        
    3. $b=$_GET['page'];          
    4.         echo getcwd() . "\n";
    5.         chdir($b);
    6.             $_GET['page']=$v;
    7.         }
    8.     }
    В смысле определяет папку как папку в каталоге, но дальше не ходит, что опять же справедливо - скрипт отработал и в этом подкаталоге его физически нет.
     
  5. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Я думаю, что нужно указывать глубину сканирования, чтобы одним разом сканировать подкаталоги.
    Вероятно, сохранять все в многомерный массив, потом уже ходить по массиву. Подкаталог - уровень вложенности массива.
     
  6. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
  7. mifitator

    mifitator Новичок

    С нами с:
    11 сен 2014
    Сообщения:
    11
    Симпатии:
    0
    Да, как вариант конечно - - но не совсем то,что требовалось ))

    Спасибо за ответы!