За последние 24 часа нас посетили 16486 программистов и 1678 роботов. Сейчас ищут 857 программистов ...

Листинг директорий

Тема в разделе "Прочие вопросы по PHP", создана пользователем Конкурент, 16 апр 2014.

  1. Конкурент

    Конкурент Новичок

    С нами с:
    15 апр 2014
    Сообщения:
    16
    Симпатии:
    0
    Почему,
    нажав на ссылку, не происходит отображение содержания уже другой директории?
    Код (Text):
    1. <?php
    2. echo '<form method="POST">';
    3. $dir = $_SERVER['DOCUMENT_ROOT'];
    4. echo '<input type="text" name="location" value="'.$dir.'"><input type="submit" value="Перейти"><br>';
    5. if (isset($_POST["location"])) {
    6. $dir = $_POST['location'];
    7. }
    8. if (is_dir($dir)) {
    9. if ($dh = opendir($dir)) {
    10. while (false !== ($file = readdir($dh))) {
    11. echo '<a href="?act=fm&file='.$file.'">'.$file.'</a><br>';
    12. if (isset($_GET['file'])) {
    13. if (is_dir($dir.'/'.$_GET['file'])) {
    14. $dir = $_POST['location'].'/'.$_GET['file'];
    15. $msg = 'Directory changed';
    16. }
    17. if (is_file($dir.'/'.$_GET['file'])) {
    18. $msg = 'File could not be opened!';
    19. }
    20. }
    21. }
    22. closedir($dh);
    23. }
    24. }
    25. echo '</form>';
    26. echo $msg;
    27. ?>
     
  2. BlackScorp

    BlackScorp Новичок

    С нами с:
    16 апр 2014
    Сообщения:
    54
    Симпатии:
    0
    Адрес:
    Germany
    Код (Text):
    1.  
    2. <?php
    3.  
    4. $path = realpath('.');
    5. $dir  = '';
    6. if (isset($_GET['dir'])) {
    7.     $dir = $_GET['dir'] . DIRECTORY_SEPARATOR;
    8. }
    9. if (isset($_GET['file'])) {
    10.     $filePath = $_GET['file'];
    11.     $file     = new SplFileObject($filePath);
    12.     var_dump($file);
    13. }
    14. $path = realpath($path . DIRECTORY_SEPARATOR . $dir);
    15.  
    16. $allowedExtensions  = array(
    17.     'php',
    18.     'png'
    19. );
    20. $excludeDirectories = array(
    21.     '.git'
    22. );
    23.  
    24. $objects            = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CATCH_GET_CHILD);
    25. foreach ($objects as $name => $object) {
    26.     if ($object->isDir() && !in_array($object->getFilename(), $excludeDirectories)) {
    27.         echo '<a href="?dir=' . $dir . $object->getFilename() . '">' . $object->getFilename() . '</a><br/>';
    28.     } else {
    29.         if (in_array($object->getExtension(), $allowedExtensions)) {
    30.            echo '<a href="?file=' . $dir . $object->getFilename() . '">' . $object->getFilename() . '</a><br/>';
    31.         }
    32.     }
    33. }
    поробуйте етот