| ПРОЕКТУВАННЯ
Перед початком роботи варто сісти і продумати план функціонування майбутнього сценарію. Можливість яких дій він надаватиме користувачеві? Ну, напевно, таких щонайменше чотири:
- по-перше, файловий менеджер повинен
дозволяти відвідувачеві видаляти файли і теки з сайту;
- по-друге - їх копіювати;
- по-третє - їх перейменовувати;
- і в четвертих - створювати нові теки.
Можна було б додати ще можливість завантаження файлів на сайт, але сценарій, що реалізовує її, розглядався в 7-ій главі цієї книги, так що тут його розглядати не будемо. Додати його до готової програми, думається, вам труднощів не складе.
Ну і, зрозуміло, файловий менеджер повинен відображувати список файлів в певній директорії, а також дозволяти подорожувати по всіх вкладених в цю директорію теках і вибирати файли і теки для проведення дій.
Коментар:
Функція
переміщення файлів розкладається на два етапи - їх копіювання в іншу теку і видалення з вихідного місця. Файловий менеджер, що розглядається в цій главі, дозволяє і копіювати, і видаляти файли, так що перемістити файли сього допомогою теж можливо. За бажання ви можете згодом доповнити його функцією переміщення, просто поєднавши підпрограми копіювання і видалення файлів.
Як все це зробити?
Як відвідувачеві вибрати вигляд дії над файлами? Можна, звичайно, виділити для кожної вказаної вище дії з окремої web-странице, розмістити на цих сторінках відповідні сценарії, при цьому для їх виконання відвідувачеві доведеться заходити на потрібну сторінку. Проте це вельми незручно. Краще дати відвідувачеві можливість вибирати вигляд дії прямо на тій же самій сторінці, де відображується список файлів.
Як здійснити такий вибір дії? Можна, звичайно, створити гурт єдиного вибору, що складається з декількох radio buttons (вона є групою кружків, відзначити з яких можна лише один - мал. 11.1, зліва), а в сценарії виконання дії визначати, який пункт був відмічений. Проте цікавіше для вибору дії використовуватиме кнопки типа submit (мал. 11.1, справа), натиснення яких викличе перехід на сторінка-обробник форми, що містить ці кнопки. Відвідувач, відзначивши файли, просто натискуватиме потрібну кнопку і чекатиме результату.
Мал. 11.1. Способи вибору дії. Краще той, що справа.
Коментар:
Виникає питання: а як сценарій-обробник розрізнить, яка кнопка з чотирьох натискувала? Дуже просто. Кожній кнопці необхідно привласнити ім'я і перевіряти в сценарії-обробнику значення змінної з цим ім'ям. Кнопка - це частина форми, отже, для неї теж створюється змінна з тим же ім'ям, а також елементи масивів $ Http_post_vars[ім'я кнопки] і в РНР версії 4.1 і старше - і $ POST [ім'я кнопки]. Обробка форми відбувається так, що в ту змінну, ім'я якої збігається з ім'ям кнопки, що натискує, буде поміщено значення value цієї кнопки (тобто те, що було написом на ній), змінні ж останніх трьох кнопок будуть порожніми. На підставі «порожнечі» або «непорожнечі» відповідних змінних і судитимемо про те, яку дію вибрав відвідувач.
Для того, щоб відвідувач мав можливість вказати сценарію об'єкти дій - тобто над якими файлами ці дії повинні вироблятися - досить проти кожного імені файлу поставити checkbox (пункт, який можна відзначити галочкою, див. на мал. 11.3-11.6), розмістивши все checkbox'bi в єдиній формі, а потім аналізувати полягання checkbox`ов в програмі-обробнику форми.
Отже, в першому
файлі нашого файлового менеджера повинна розташовуватися форма, що містить список файлів і тек в поточній директорії (що виводиться спеціальним сценарієм, що дозволяє також переміщатися по вкладених теках) із спеськьох'амі біля кожної назви файлу або теки, а в низу форми повинні розташовуватися чотири кнопки типа submit з різними іменами.
Але простого вибору дії недостатньо для початку його виконання. Перед тим, як здійснювати роботу, у відвідувача необхідно ще з'ясувати:
- для проведення копіювання - теку, в
яку копіювати вибрані файли;
- для здійснення перейменування -
нові імена для файлів, що перейменовуються;
- для створення нової теки - ім'я
цієї нової теки;
- для видалення вибраних файлів - запитувати нічого не треба, але не завадило б вивести підтвердження видалення.
Отже, необхідний проміжний етап - запит додаткових даних від відвідувача. Саме на сторінку з сценаріями, що запрошують потрібні відомості, і повинен здійснюватися перехід з основної сторінки менеджера файлів при виборі відвідувачем якої-небудь дії. Залежно від вибраної дії запрошується відповідна інформація. Краще всього здійснити її
введення в
розташовану на проміжній сторінці призначену для користувача форму.
Після
здобуття від відвідувача додаткової інформації можна і виконувати самі дії. Сценарії, що виконують їх, повинні знаходитися в окремому файлі, який буде призначений обробником форм на проміжній сторінці.
Після виконання дій сповна логічно здійснювати автоматичний перехід на основну сторінку файлового менеджера.
Разом
для реалізації сценарію потрібно буде створити три файли:
- основний, такий, що відображує
список файлів в директорії, що дозволяє також переміщатися по дереву
тек, відзначати потрібні і вибирати типа дії над ними. Назвемо його
index.php.
- файл запитів, що запрошує у
відвідувача інформацію для здійснення вибраної дії, - місце призначення
копіювання, нові імена для перейменованих файлів, ім'я для новоствореної
теки або видаючий запит на підтвердження видалення. Назвемо його
zapros.php.
- файл дії, що власне виконує вибрану дію, а після його виконання - що автоматично перенаправляє відвідувача на основний файл.
Графічну схему дивитеся на мал. 11.2.
Мал. 11.2. Схема сценарію файлового менеджера
Залишається додати побажання дозволяти відвідувачеві працювати лише з файлами в певній директорії, а самі сторінки з сценаріями розмістити поза нею, щоб відвідувач через недогляд або по злому наміру не міг зіпсувати вміст сайту.
Що ж - від загальних слів перейдемо до самого тексту файлів сценарію.
|