Тестове завдання для PHP програміста

Дане тестове завдання швидше за все більше підходить для junior програміста, ніж для запеклого вовка seniorа.

Анотація

Даний документ описує тестове завдання, яке повинен виконати претендент на посаду Junior PHP Developer.
Завдання розраховане на 80 годин розробки. Після завершення тестового завдання приймається рішення, воно може бути одним з наступних:

  • завершення випробувального терміну та прийняття на роботу
  • продовження випробувального терміну ще на 2 тижні з живими або тестовими проектами
  • завершення випробувального терміну і відмова в прийнятті на роботу

Тестове завдання розділене на чотири складові – перша частина обов’язкова, інші не є обов’язковими, і пов’язані тільки з першою частиною. Виконання необов’язкових частин є безумовним плюсом.

Гостьова книга

Гостьова книга надає можливість користувачам сайту залишати повідомлення на сайті. Всі дані введені користувачем зберігаються в БД MySQL, так само в базі даних зберігаються дані про IP користувача і його браузер.

Форма додавання запису в гостьову книгу повинна мати такі поля:

  • User Name (цифри і букви латинського алфавіту) – обов’язкове поле
  • E-mail (формат email) – обов’язкове поле
  • Homepage (формат url) – необов’язкове поле
  • CAPTCHA (цифри і букви латинського алфавіту) – зображення і обов’язкове поле (http://ru.wikipedia.org/wiki/CAPTCHA)
  • Text (безпосередньо сам текст повідомлення, HTML теги неприпустимі) – обов’язкове поле

Повідомлення повинні виводиться у вигляді таблиці, з можливістю сортування за наступними полями: User Name, e-mail, і дата додавання (як в порядку спадання, так і у зворотному). Повідомлення повинні розбиватися на сторінки по 25 повідомлень на кожну. Сортування за замовчуванням – LIFO.
При написанні проекту слід звернути увагу на захист від XSS атак і SQL-ін’єкцій.(http://ru.wikipedia.org/wiki/Межсайтовый_скриптинг і http://ru.wikipedia.org/wiki/Инъекция_SQL)
Вітається створення найпростішого дизайну з використанням CSS.

Гостьова книга. JavaScript і робота з файлами

До базової функціональності, слід додати наступні можливості:

  • До повідомлення користувач може додати картинку або текстовий файл
  • Зображення повинно бути не більше 320х240 пікселів, при спробі залити зображення більшого розміру, картинка повинна бути пропорційно зменшена до заданих розмірів, допустимі формати файлів: JPG, GIF, PNG
  • Текстовий файл не повинен бути більше ніж 100 Кб, формат TXT
  • Перегляд файлів повинен супроводжуватися візуальними ефектами (для прикладу можна подивитися http://www.huddletogether.com/projects/lightbox/)

Гостьова книга. Регулярні вирази

До базової функціональності, слід додати наступні можливості:

Користувач може використовувати такі HTML теги в повідомленнях:

  • <a href=”” title=”” > </ a>
  • <code> </ code>
  • <i> </ i>
  • <strike> </ strike>
  • <strong> </ strong>

Повинна бути перевірка на закриття тегів, код повинен бути дійсним XHTML

Гостьова книга. JavaScript і AJAX

До базової функціональності, слід додати наступні можливості:

  • Валідація даних, що вводяться на стороні сервера і клієнта
  • Функція попереднього повідомлення, без перезавантаження сторінки
  • Для HTML тегів зробити панель з кнопками ([link],, [italic], [strike], [strong])
  • Додавання візуальних ефектів так само вітається

Вимоги

Система повинна коректно працювати на ОС Linux з наступною конфігурацією:

  • PHP 5.3 +
  • MySQL 5.1 +
  • Apache 2.2 +

Необхідно використовувати наступні бібліотеки:

  • PHP Zend Framework(Обов’язково)
  • JS jQuery або Prototype

Як передати тестове завдання на перевірку/тестування

  1. Зробити повний дамп бази даних, з опцією –opt
  2. Зробити архів завдання з збереженням прав доступу і всіма потрібними бібліотеками
  3. Написати коротку інструкцію як встановлювати англійською мовою
  4. Перевірити те, що Ви створили написали – самостійно встановити з Вашого архіву, закачати в інтернет на свій хостинг
  5. Надіслати отримані файли на job@magneticone.com
  6. Надіслати URL на це завдання, де можна його переглянути job@magneticone.com

Що відбудеться далі

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

Дякуємо що дійшли до цього моменту в тексті, сам цей показник свідчить про Вашу уважність та наполегливість!