Потрібно зробити php галерею зображень до сайту на тематику gaming зразка MVC, використовуючи базу даних з віртуальної машини з Virtual Box.
Вимагання:
Категорія 1:
А) Завантаження файлів на сервер
Щоб завантажити фотографії в галерею, необхідно реалізувати функцію завантаження файлів на сервер. Слід допускати тільки файли PNG або JPG. Завантажені файли
не повинні перевищувати 1 МБ. Якщо користувач намагається відправити фото з більшим розміром або в іншому форматі, має надійти відповідне повідомлення (окремо для формату файл, його розмір або і те, і інше).У директорії, налаштованої як DocumentRoot програми, додати підкаталог зображень і розмістити в ньому фотографії, завантажені на сервер [зверніть увагу на дозволи на цей каталог].
Завдяки цьому веб-сервер зможе пізніше подавати фотографії браузеру, щоб обслуговувати їх під час
переглядів сторінок.
Б) Водяний знак і мініатюра
Форма завантаження файлу повинна бути заповнена текстовим полем під назвою «водяний знак»,
завершення якого є обов'язковим.
Після завантаження фотографії на серверній стороні слід зробити дві трансформації отриманого файлу:
• нанести водяний знак на оригінальну текстову фотографію (зміст позначки взято з форми),
• Згенерувати мініатюру розміром 200х125 пікселів.
Використовуйте бібліотеку PHP GD, яка була встановлена у віртуальній машині, в
час на налаштування робочого середовища.
Після реалізації вищеописаних операцій на сервері повинно залишитися 3 файли зображень
Для кожної завантаженої фотографії: 1) оригінальна фотографія, 2) фотографія з водяним знаком і 3) Мініатюра.
В) Галерея завантажених фотографій
Потрібно підготувати PHP-код, що дозволяє відобразити колективну галерею всіх фотографій, відправлених на сервер. У галереї повинні бути представлені мініатюри фотографій (згенерованих в рамках завдання Б вище).
Натискання на мініатюру фотографії повинно направити вас на повну фотографію з водяним знаком у повному розмірі.
У рамках завдання повинні використовуватися принаймні дві з наступних мовних директив:
PHP: include, include_once, require, require_once. Заявки повинні відповідати вимогам і цільовим використанням обраних директив.
ІІ категорія
А) Використання бази даних
Форма для відправки файлів повинна бути заповнена текстовими полями «title» і «author». При отриманні коректного файлу (формат і розмір), дані про фотографію повинні бути збережені в базі MongoDB. Інформацію про назви та авторів кожної фотографії потрібно висвітлювати в галереї мініатюр.
Б) Реєстрація користувача та логін
Підготувати форму реєстрації користувача, що містить наступні поля: «адреса електронної пошти», «логін», "Пароль", "Повторити пароль" (всі обов'язкові поля). Після перевірки отриманих даних з форми (перевірити, чи не був ще взятий введений логін), якщо ні, то зберегти нового користувача в базі даних MongoDB. Не забудьте перетворити пароль на хеш-форму, з використанням безпечної хеш-функції.
Потрібно підготувати форму для входу, що містить поля «логін» і «пароль». Для аутентифікації повинна використовуватися база даних зареєстрованих користувачів програми. Якщо вказані логін і пароль співпали з одним з існуючих користувачів в базі даних, зберегти в сесії його ідентифікатор і відобразити повідомлення про те, що вхід до системи виконано успішно. Інакше знову відобразіть форму входу з невдалим повідомленням.
Користувач, який увійшов у систему, не повинен бачити форму входу.
Опція виходу доступна для користувача, який увійшов у систему;
В) Механізм сесії
Змініть колекцію ескізів таким чином, щоб кожна фотографія мала прапорець, що ідентифікує фотографію (можна використовувати значення pola _id з бази даних).
Також слід додати кнопку «Запам'ятати вибране». Коли користувач вибере картинки і натисне кнопку - запам'ятати його вибір в сеансі. Коли користувач знову заходить на сайт галереї мініатюр, раніше збережені фотографії повинні мати призначені поля типу
checkbox.
Вам слід додати ще одну підсторінку в додатку, представивши тільки фотографії, які були
раніше обрані користувачем. При всіх фотографіях на цій сторінці знову потрібно висвітлити поля checkbox, які дозволять усунути зазначені фото із запам'ятаних у сесії (після натискання кнопки "Видалити вибране з запам'ятовуваного").
Функціональність аналогічна додаванню/видаленню товарів до/з кошика для покупок.
ІІІ категорія
А) Розрізнення користувачів
Форму завантаження фотографій слід змінити, щоб запропонувати додаткові функції
користувачам, які ввійшли в систему. Коли користувач авторизований, поле «автор» форми має автоматично включати логін користувача. Крім того, для зареєстрованих користувачів ви повинні відображати додатковий Radiobutton, що дозволяє перемикатися між значеннями "публічні" і "приватні".
Якщо користувач вибирає "приватний", фотографія не повинна бути видимою в галереї мініатюр для інших користувачів (як залогінених, так і анонімних). Фото повинно бути
відображене в галереї користувачеві, який завантажив її (із інформацією, що вона приватна).
З публічними фотографіями слід поводитися в звичайному режимі. Фотографії, завантажені тими, хто не увійшов в систему, повинні автоматично розглядатися як загальнодоступні.
Б) AJAX – пошук фотографій
Реалізуйте пошукову систему фотографій за допомогою технології AJAX. Пошуковас торінка повинна бути реалізована у вигляді окремої підсторінки.
Після входу на цю підсторінку, Ви повинні побачити текстове поле, де користувач може ввести частину заголовку фото, яке він шукає.
Коли користувач вводить більше літер у пошукову систему (наприклад, у відповідь на подію onkeyup) відправляти на сервер подальші асинхронні HTTP (AJAX) запити, які містять поточне значення текстового поля. Сервер шукає фотографії, назви яких містять фразу, що набирається користувачем і у відповідь відправляє фрагмент HTML-коду, що представляє мініатюри підібраної фотографії. Браузер ппісля отримання відповіді від сервера відображає зіставлені мініатюри користувачеві.