Как сменить каталог на scandir по ссылке - PullRequest
0 голосов
/ 27 июня 2019

Я хочу небольшой скрипт для печати содержимого текущего каталога с помощью scandir. Идея заключалась в том, чтобы сделать небольшой инструмент для навигации по файлам с предварительным просмотром каталога, в котором хранится php-файл, и возможностью навигации по каталогу.

Проблема в том, что я не знаю, как изменить каталог для scandir (по ссылке), возможно, с помощью getpost и обновить файл для вывода содержимого.

на самом деле мой скрипт работает, только если я помещаю его в каждый каталог, по которому я хочу перейти (и вернуться назад). Есть ли способ заставить это работать, только имея его в каталоге, где я хочу запустить навигацию и изменить каталог, нажав на папку?

Я попытался создать переменную для пересылки значения post и сделать ссылки на каталог на текущем выводе, такие как chdir (directory), и добавить сверху if / else, который проверяет, есть ли содержимое в getpost, и если затем изменить dir к этому вместо текущего каталога .. но это работает только для 2 папок и затем перестает работать ..

<?php
$dir = '.';
$directories = array();
$files_list  = array();
$files = scandir($dir);

foreach ($files as $file) {
    if(($file != '.') && ($file != '..') && ($file != 'index.php') && ($file != 'assets')) {
    if(is_dir($dir.'/'.$file)){
        $directories[] = $file;
        }
        else {
        $files_list[] = $file;
        }
    }
}

// Print Directory to screen
foreach ($directories as $directory) {
    echo "<div class=\"wrapper\">";
    echo "<a href=\"" . $directory . "\">";
    echo "<div class=\"preview\">";
    echo "<img src=\"assets/media/ordner.png\" alt=\"directory\" class=\"packshot zoom\" />";
    echo "</div>";
    echo "</a>";
    echo "<div class=\"title\"><p>&raquo; " . $directory . "</p></div>";
    echo "</div>";
}

// print files
foreach ($files_list as $file_list) {
    $file_list_info = pathinfo($dir."/".$file_list);
    $file_list_size = ceil(filesize($dir."/".$file_list)/1024);
    $file_list_pic = array("jpeg", "jpg", "png", "gif", "svg", "bmp", "tiff");

    if(in_array($file_list_info['extension'],$file_list_pic)) {
    echo "<div class=\"wrapper\">";
    echo "<a href=\"" . $file_list . "\" target=\"_blank\">";
    echo "<div class=\"preview\">";
    echo "<img src=\"" . $file_list . "\" alt=\"picture\" class=\"packshot\" />";
    echo "</div>";
    echo "</a>";
    echo "<div class=\"title\"><p>" . $file_list . " (" . $file_list_size . "kb)</p></div>";
    echo "</div>";
    }
}
 ?>

1 Ответ

0 голосов
/ 27 июня 2019

Вы можете использовать переменную $ _GET.

В начале файла вы можете определить dir var следующим образом:

if(!empty($_GET['dir'])){
    $dir = $_GET['dir'];
}else{
    $dir = '.';
}

А потом, когда вы генерируете ссылки, используйте что-то подобное

echo "<a href=\"?dir=" .$dir."/". $directory . "\">";

Поэтому, когда вы нажмете на ссылку, она будет перенаправлена ​​на «index.php? Dir = mydir»

И на странице будет отображаться содержимое "./mydir/"

...