Гостевая книга предоставляет возможность пользователям сайта оставлять сообщения на сайте.
Гостевая книга предоставляет возможность пользователям сайта оставлять сообщения на сайте. Все данные введенные пользователем сохраняются в БД MySQL. Также в БД сохраняются данные о IP-адресе пользователя, его браузере, дате написания сообщения.
Форма добавления записи в гостевую книгу должна иметь следующие поля:
- User Name (цифры и буквы в кодировке UTF-8) – обязательное поле
- E-mail (формат e-mail) - обязательное поле
- Homepage (формат URL) – необязательное поле
- CAPTCHA (цифры и буквы латинского алфавита) – изображение и обязательное поле (http://ru.wikipedia.org/wiki/CAPTCHA)
- Text (непосредственно сам текст сообщения, HTML тэги недопустимы) – обязательное поле
- Сообщения должны выводится в виде таблицы, с возможностью сортировки по следующим полям:
- User Name, e-mail, дата добавления сообщения (как в порядке убывания, так и возрастания).
- Сообщения должны разбиваться на страницы (количество сообщений на странице задается в конфигурационном файле).
- Сортировка по умолчанию - LIFO.
Необходимо выполнить задание в полном объеме, обязательно руководствуясь следующими требованиями:
- Пример должен быть полностью рабочий, то есть все части должны запускаться путем смены пути к корню сайта в конфиге виртуального хоста web-сервера Apache.
- В задании должен использоваться текстовый конфигурационный файл, в котором задаются настройки БД, параметры captcha, количество сообщений выводимых на одну страницу.
- Весь функционал для с CAPTCHA и БД должен быть оформлен отдельными классами (с конструкторами и методами) для демонстрации навыков работы с ООП.
- В задании должны использоваться прагмы strict и warnings.
- Для работы c HTML необходимо использовать систему шаблонов: Template-Toolkit (желательно), HTML::Template, XML/XSLT (допустимо), не допускается размещение HTML кода внутри скриптов.
- Для демонстрации работы с JavaScript, необходимо выполнить проверку введенных параметров (с выдачей сообщения об ошибках при необходимости).
- Для работы с БД следует использовать DBI модуль (не ORM системы).
- К заданию необходимо приложить SQL создающий необходимые для работы таблицы в БД.
- При написании задания следует обратить внимание на защиту от XSS атак и SQL–инъекций. (http://ru.wikipedia.org/wiki/Межсайтовый_скриптинг и http://ru.wikipedia.org/wiki/Инъекция_SQL).
- Приветствуется создание простейшего визуального оформления с использованием CSS.
1. Apache (mod_perl или cgi) + Nginx (прокси)
2. PERL5 (POD, Critic) без тестов.
3. MySQL
4. Mojolicious
5. latest (warnings, strict),
6. TT,
7. CRUD with validation,
8. CAPTCHA,
9. DBI,
10. XSS (учтено для всех полей + HTML символы) my $safe = convert_XSS($stuff);
1 рабочий день