Файловий менеджер KCFinder

428

Від автора: на нашому сайті вже публікувався урок з використання візуального редактора (WYSIWYG) з файловим менеджером. Тоді в якості файлового менеджера використовувалось безкоштовне рішення AjexFileManager.

У коментарях до уроку був згаданий інший файловий менеджер — KCFinder, який ідеально підходить для використання з редактором CKeditor. У даному уроці ми з Вами розглянемо використання файлового менеджера KCFinder в зв’язці з редактором CKeditor.

Деталі підручника

Тема: PHP, JavaScript

Складність: Середня

Урок: Відео версія (.mp4)

Час: 00:35:00

Розмір архіву: 92 Mb

Файловий менеджер KCFinderФайловий менеджер KCFinder

Отже, поточну версію редактора можна скачати з офсайта (http://ckeditor.com/download). Поточну версію файлового менеджера також можна взяти на офсайті. Також архіви з ними Ви зможете знайти в додаткових матеріалах до уроку.

Для демонстрації нам буде потрібно невеликий додаток, яке б мало якусь закриту (адміністративну) частину. В цій частині і буде перебувати візуальний редактор. За основу організації доступу до закритої частини взяті матеріали уроку Створення простої системи авторизації. Ну і, нарешті, потрібно сховище даних — у нас це буде БД з однією таблицею і однією статтею. Дамп БД Ви також знайдете в додаткових матеріалах (файл dump.sql).

Процес підключення до редактора текстової області форми вкрай простий. Досить підключити конфігураційний файл ckeditor.js з папки редактора:

Та викликати потрібного поля підключення редактора:

CKEDITOR.replace( ‘editor1’ );
CKEDITOR.editorConfig = function( config ) {
// KCFinder
config.filebrowserBrowseUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/browse.php?type=files’;
config.filebrowserImageBrowseUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/browse.php?type=images’;
config.filebrowserFlashBrowseUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/browse.php?type=flash’;
config.filebrowserUploadUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/upload.php?type=files’;
config.filebrowserImageUploadUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/upload.php?type=images’;
config.filebrowserFlashUploadUrl = ‘http://localhost/wysiwyg/scripts/kcfinder/upload.php?type=flash’;
// …

Зауважимо, що краще використовувати не відносні, а абсолютні шляхи. Після цього в редакторі у вікні роботи з картинками повинні з’явитися нові елементи — вкладка «Завантажити» і кнопка «Вибір на сервері»:

Файловий менеджер KCFinder

Але на цьому наша робота не завершена. Якщо зараз спробувати клікнути по кнопці «Вибір на сервері», то відкриється порожнє вікно, під яким ховається ще одне віконце з повідомленням про те, що ми не можемо переглядати вміст сервера:

Файловий менеджер KCFinder

Для того, щоб все ж таки переглянути вміст, необхідно поправити налаштування в файл config.php менеджера. В даному конфігураційному файлі прописані всілякі налаштування в масиві $_CONFIG. Нам досить змінити значення елемента disabled з true на false, тим самим ми відкриваємо менеджер для всіх. Ще одна настройка відповідає за шлях до каталогу файлів, що завантажуються — це елемент uploadURL, значенням якого в моєму випадку буде шлях «http://localhost/wysiwyg/upload» (це шлях до каталогу /upload/, створеному нами раніше).

Тепер ми можемо переглядати вміст папки і закачувати в неї файли:

Файловий менеджер KCFinder

Все чудово, але за нашим задумом користуватися менеджером може тільки адміністратор — адже недарма розмістили редактор в закритій частині сайту.

Запам’ятаємо посилання на менеджер — вона в адресному рядку і має приблизно такий вигляд: «http://site/kcfinder/browse.php?type=images». Тепер разлогинемся, натиснувши посилання «Вихід». На даний момент ми не адміністратори і не маємо доступу до редактора. Але спробуємо безпосередньо звернутися до менеджера… і ми спокійно це зробили. Можна переглядати, видаляти і заливати щось своє. Це не зовсім добре і треба б надавати такий доступ лише адміністратору.

У розділі інтеграції на офсайті менеджера можна знайти і скористатися запропонованим рішенням. Отже, насамперед, необхідно закрити доступ до менеджеру для всіх, пам’ятайте, ми відкрили його для всіх, прописавши в налаштуванні disabled значення false файлу config.php. Давайте ми повернемо значення за замовчуванням — true для даної настройки. Тепер менеджер закритий для всіх, в тому числі і для адміністратора.

Тепер давайте відкриємо його для адміністратора. В моєму випадку під адміністратора в сесії виділяється елемент admin ($_SESSION[‘admin’]). Відповідно, достатньо перевірити чи є шуканий елемент у сесії. Якщо такий елемент буде, значить до менеджера звертається адміністратор, і ми створимо під нього сесії спеціальний масив$_SESSION[‘KCFINDER’]), завдяки якому адміністратор буде мати доступ до менеджера. Якщо ж звернення йде не від адміністратора, то рекомендую видалити з сесії масив $_SESSION[‘KCFINDER’].

Отже, у файлі config.php перед оголошенням масиву $_CONFIG оголосимо умова:

session_start();
if($_SESSION[‘admin’]){
$_SESSION[‘KCFINDER’] = array();
$_SESSION[‘KCFINDER’][‘disabled’] = false;
}else{
unset($_SESSION[‘KCFINDER’]);
}

Тепер доступ до менеджеру буде відкритий виключно для адміністратора.

Це перший варіант, описаний на офсайті. Другий варіант полягає в обмеженні доступу безпосередньо до файлу browse.php. Для цього приберемо попередня умова і знову відкриємо менеджер для всіх: ‘disabled’ => false.

Тепер звернемося до файлу browse.php і допишемо в нього на початку перевірку:

session_start();
if(!$_SESSION[‘admin’]){
exit();
}

Власне, тут все ще простіше — якщо до файлу звертається не адміністратор, то просто переривається подальша робота з цим файлом.

От і все. Ми підключили до редактора чудовий файловий менеджер і обмежили доступ до нього. На цьому у мене все. Удачі Вам і до нових зустрічей!