Розробка соціальної мережі.

Технічне завдання.

  1. На сторінку виводиться декілька свіжих постів.
  2. Кожен пост складається з таких елементів:
    - автор;
    - дата публікації (визначається автоматично);
    - зображення (посилання на ресурс в інтернеті);
    - коментар;
    - кількість лайків.
  3. На лайк можна клацнути, збільшивши чи зменшивши їх загальну кількість.
  4. Внизу сторінки кнопка "Завантажити ще", при натисканні на кнопку дозавантажувати старіші пости.
  5. Зручно буде - доскроливши до низу одразу дозавантажувати нові пости.
  6. Кнопка "Створити пост", при натисненні на яку відкривається форма добавляння нового поста.

Додаткові задачі для самостійного опрацювання і власного портфоліо:

  1. Періодичне автоматичне оновлення постів.
  2. Створити модуль авторизації, вхід на сайт під логіном-паролем (пароль має шифруватися в md5).
  3. Read-only режим для анонімних користувачів, для зареєстрованих - аватарки.
  4. Активація логіна через e-mail, відновлення забутого пароля.
  5. Можливість завантаження своїх зображень.
  6. Можливість створювати пости з відео (з ютуба) та декількома фотографіями (альбом).
  7. Робота з мітками (хеш-тегами).
  8. Приватні повідомлення.
  9. Можливість додавати коментарі до постів.
  10. Модерація коментарів автором, редагування постів.
  11. Модерація всієї мережі адміном, блокування користувачів.
  12. Збереження токенів (щоб користувачеві не приходилося весь час вводити логін-пароль).

Також бажано використовувати препроцесори, зборщики, власні бібліотеки.

Реалізувавши ці задачі ви створите повноцінну соціальну мережу, яка стане окрасою вашого портфоліо, показуючи, що ви вмієте працювати:
- з базою даних;
- з бекенд-скриптами;
- з авторизацією, токенами;
- з розподіленням ролей (анонім, користувач, автор, адмін);
- з e-mail;
- можете побудувати модель, логіку, взаємодію складного проекту.

Кому цікаво реалізувати цей проект - з радістю допоможу підказками та консультаціями на рахунок технологій.

База даних.

У вебі найчастіше використовують реляційні бази даних.

Уявіть таблицю (типу Excel), в якій зберігаються дані. Верхній рядок - заголовки:

IDЛогінПарольПІПe-mailТелефон
1BigBoy*******Іванов І.І.bigboy@gmail.com068-345-23-12
2Tania_petrova*****Петрова Т.С.tania88@gmail.com099-123-45-67
3limpopo********Сидоров Г.Н.gokucoku@gmail.com066-777-33-22
4blackman*******Чорний А.П.anatgreg@gmail.com098-875-00-17
5SweetyLidka******Влатова Л.В.lidkasweet@gmail.com096-666-13-13

Таким чином є у нас таблиця з даними користувачів сайту.

Реляційна база даних складається з:

Таблиця - набір зв'язаної інформації у табличному представленні.

Запис - строка таблиці, що описує один об'єкт.

Поле - чарунка таблиці, що містить одну характеристику об'єкта.

Нехай у нас буде інтернет-магазин. Будемо зберігати інформацію про покупки наших користувачів:

ПокупецьТоварКількістьСумаДата
1limpopoМасажер180.002017-02-04
2SweetyLidkaМасажер5400.002017-02-04
3BigBoyЗубна щітка175.002017-02-04
4limpopoКрем3270.002017-02-05
5BigBoyМило115.002017-02-05
6BigBoyМочалка2640.002017-02-06
7limpopoКрем3270.002017-02-08

Тепер наша база даних складається з двох таблиць: таблиця користувачів, таблиця покупок.

Для невеликого інтернет-магазина потрібно 10-20 таблиць: користувачі, товари, продажі, надходження, акції, постачальники, зворотній зв'язок і тому подібне.

Уявімо, що користувач поміняє логін. Або буде уточнена назва товару. Потрібно буде зробити зміну логіна в першій таблиці, а також перебрати всі записи другої таблиці та внести виправлення.

Це дуже незручно. До того ж наші таблиці є незалежні одна від одної. Давайте зв'яжемо наші таблиці, додавши ще одну таблицю товару. Для зв'язування використовуються ідентифікатори:

Назва товаруОдиниць на складіЦіна продажу
1Масажер4280.00
2Мило66615.00
3Зубна щітка3475.00
4Мочалка12320.00
5Крем14090.00

Таблиця користувачів не зміниться. А ось в таблиці покупок два стовбчика видозміняться, замість назв поля будуть містити ідентифікатори - посилання на об'єкти в інших таблицях.

Наведіть мишу на ідентифікатор - вспливе підказка на який саме об'єкт зсилається цей ідентифікатор.

ПокупецьТоварКількістьСумаДата
131180.002017-02-04
2515400.002017-02-04
313175.002017-02-04
4353270.002017-02-05
512115.002017-02-05
6142640.002017-02-06
7353270.002017-02-08

Тепер при зміні будь-яких даних (логін, назва товару) правку треба зробити тільки в одному полі однієї з таблиць. Окрім того, дані тепер не дублюються.

Завдання.

  1. Розробіть базу даних для соцмережі.
  2. Дома спробуйте розробити базу даних для розширеного ТЗ соц-мережі (на декілька таблиць).

Запити до бази даних.

Реалізація бекенд-скриптів на PHP.

На минулому занятті ми познайомилися з отриманням ресурсів (файлів) з сервера.

Використовуючи ajax ми можемо відправити на сервер деякі дані. Сервер їх отримає, обробить, виконає певні дії та поверне результат.

Вся ця процедура схожа на функцію з аргументами (умовний приклад):

// frontend, виконується на ваших ноутбуках, компах, телефонах:
var n = howManyLikesOfPost(7211);
$('#post_7211 .likes').text(n);

// backend, виконується на сервері в дата-центрі:
function howManyLikesOfPost(post_id){
  database.open();
  var n = database.table('posts').field('likes').record(post_id);
  database.close();
  return n;
}

Домашнє завдання.

  1. Зробіть соцмережу по заданому ТЗ.