Иллюстрированный самоучитель по PHP

Файл index.php

Сценарий в этом файле отображает список файлов и предоставляет посетителю возможность выбрать файлы для совершения над ними действия и вид этого действия.

Сначала в сценарии производится вывод на страницу списка файлов и папок в текущей директории и предоставляется возможность открыть любой файл или перейти в другую папку.

Просканировать папку и вывести список файлов можно с помощью сценария наподобие "Папкопотрошилки", описанного в 6-й главе. Поскольку планируется использовать одну и ту же страницу для отображения содержимого как корневой, так и любой из вложенных папок, то сценарию на этой странице нужно знать, список файлов в какой конкретно папке ему отображать, а также как составить ссылки на эти файлы, с указанием какого пути – "чтобы из файлового менеджера их можно было просматривать.

Проще всего передавать сценарию информацию о том, список содержимого какой папки подлежит выводу на экран, через переменную в адресной строке – попросту указав в ней путь от корневой папки к текущей. Скажем, если корневая папка имеет название files, то она будет открываться по ссылке index.php?fold=files, а вложенная в нее папка folded – по ссылке index.php?fold= files/folder1. (Как видно из текста ссылок, информация о пути к текущей папке будет доступна сценарию на странице из значения переменной Sfold, и именно значение этой переменной и будет подставляться в сценарии в качестве имени папки для сканирования.)

Например, на рис. 11.3 файловый менеджер отображает содержимое папки files/Folder2/Folder3. Обратите внимание на адресную строку браузера.

Иллюстрированный самоучитель по PHP › Файловый менеджер › Файл index.php
Рис. 11.3. Файловый менеджер в работе

Комментарий
Нетрудно заметить, что подобная конструкция весьма уязвима для взлома. В самом деле, – если подставить вместо имени корневой папки – files – имя любой другой папки, находящейся на том же уровне, что и папка files, то сценарий "Патопотрошилки" тихо-спокойно выведет и ее содержимое, – чего, возможно, делать не следует, а оно для этого может быть совсем не предназначено! А если указать в пути вместо имени каталога символы /../ (двумя точками обозначается родительский каталог, одной – текущий), то посетитель сможет добраться и до корневой папки всего сайта, и фактически получит возможность удалять, переименовывать, просматривать все файлы на сайте-аккаунте, так как весь сайт будет в его распоряжении
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.