What are some best practices for creating a PHP page that displays a directory tree and allows users to select directories or files?

When creating a PHP page that displays a directory tree and allows users to select directories or files, it is important to use recursive functions to scan through directories and display their contents. Additionally, you should use HTML forms to allow users to select directories or files, and use PHP sessions to keep track of the user's selections.

<?php
session_start();

function displayDirectory($dir) {
    $files = scandir($dir);
    
    echo "<ul>";
    foreach ($files as $file) {
        if ($file != "." && $file != "..") {
            echo "<li>";
            if (is_dir($dir . "/" . $file)) {
                echo "<a href='?dir=" . $dir . "/" . $file . "'>" . $file . "</a>";
                displayDirectory($dir . "/" . $file);
            } else {
                echo "<input type='checkbox' name='selected_files[]' value='" . $dir . "/" . $file . "'>" . $file;
            }
            echo "</li>";
        }
    }
    echo "</ul>";
}

if (isset($_GET['dir'])) {
    $currentDir = $_GET['dir'];
} else {
    $currentDir = ".";
}

echo "<form method='post'>";
displayDirectory($currentDir);
echo "<input type='submit' value='Select'>";
echo "</form>";

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $_SESSION['selected_files'] = $_POST['selected_files'];
}
?>