↩️ Назад

Категории

file_browser.php — файловый браузер

13.04.2026 | коды из категории: php

📁 file_browser.php — файловый браузер

🔐 ЗАЩИТА:
- session_start() + проверка $_SESSION['user'] — только для админа
- htmlspecialchars() — защита от XSS при выводе имен файлов
- array_diff() — исключение служебных папок (. и ..)

⚙️ ФУНКЦИИ:
- Сканирование папки /uploads/
- Вывод списка всех файлов
- При клике — передача имени файла в родительское окно
- Автоматическое закрытие окна после выбора

📂 ВОЗМОЖНОСТИ:
- Интеграция с формой добавления статьи
- Вызов через window.open()
- Функция insertFilePath() в родителе

⚠️ ОГРАНИЧЕНИЯ:
- Показывает все файлы в папке (без фильтра по типу)
- Рекомендуется добавить фильтр расширений

📦 ПОДКЛЮЧАЕТСЯ К:
- add.php
- edit.php
- add_code_post.php
- edit_code_post.php

<?php
session_start();

if (!isset($_SESSION['user'])) {
    die("Доступ запрещен");
}

$uploadDir = '../uploads/';
$files = [];

if (file_exists($uploadDir)) {
    $files = array_diff(scandir($uploadDir), array('.', '..'));
}

// Дополнительная фильтрация: показываем только изображения
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'];
$filtered_files = [];

foreach ($files as $file) {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    if (in_array($ext, $allowed_extensions)) {
        $filtered_files[] = $file;
    }
}
$files = $filtered_files;
?>

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Выбор файла</title>
    <style>
        body { font-family: sans-serif; padding: 20px; }
        .file-list { margin-top: 20px; }
        .file-item { padding: 8px; border-bottom: 1px solid #eee; }
        .file-item:hover { background-color: #f5f5f5; cursor: pointer; }
    </style>
</head>
<body>
    <h2>Выберите файл</h2>

    <div class="file-list">
        <?php if (empty($files)): ?>
            <p>Нет загруженных файлов</p>
        <?php else: ?>
            <?php foreach ($files as $file): ?>
                <div class="file-item" onclick="selectFile('<?= htmlspecialchars($file, ENT_QUOTES, 'UTF-8') ?>')">
                    <?= htmlspecialchars($file, ENT_QUOTES, 'UTF-8') ?>
                </div>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>

    <script>
    function selectFile(filename) {
        if (window.opener && !window.opener.closed) {
            // Дополнительная проверка: экранируем имя файла перед передачей
            window.opener.insertFilePath(filename);
            window.close();
        }
    }
    </script>
</body>
</html>



Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Посетителей сегодня: 0
о блоге | карта блога

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA