Система лайків на php і ajax
Напевно, майже кожен з Вас знає, що таке лайки. Однак, крім лайків в соціальних мережах, можна зробити свою власну систему лайків на PHP і Ajax. У цій статті ми це докладно розберемо.
Безумовно, на практиці настійно рекомендую зберігати лайки в базі даних. Однак, в рамках даної статті, щоб код легко було перевірити, я вирішив зробити зберігання лайків в ini-файлі. Отже, ось власне файл likes.ini:
Відео: PHP Tutorials Create a # 39; Like # 39; Button jQuery AJAX Part 5 7
1=12
2=0
3=6Формат наступний: "id_статьі = колічество_лайков". Тепер займемося підготовкою даних для виведення на сторінку:
lt ;?php
$ id =1-// ID статті
$ data = parse_ini_file("Likes.ini") -// Парс INI-файл
$ likes = $ data[$ id] -// Отримуємо кількість лайків у статті
?gt;Код прокоментований, тому проблем з його розумінням виникнути не повинно. Тепер приступимо до HTML-коду:
lt;? =$ id?gt;"Gt;lt;? =$ likes?gt;Тут ми просто виводимо дані на сторінку. Самому блоку можна задати, безумовно, різні стилі (наприклад, хоча б cursor: pointer-) для краси.
переходимо до jаvascript: Наше завдання при кліці відправити запит на сервер, передавши ID статті:
Тут ми перехоплюємо клік по контейнеру #like. Далі відправляємо запит, передавши відповідний ID. Отримавши позитивну відповідь від сервера, збільшуємо кількість лайків на 1 в блоці. Якщо прийшла відповідь false від сервера, то повідомляємо про помилку.
Відео: Міні Ajax & PHP система за привітав
І, нарешті, прийшов час написати скрипт like.php, який і займається збільшенням числа лайків:
lt ;?php
$ text = file_get_contents("Likes.ini") -// Отримуємо вміст файлу
$ likes = explode(" N", $ text) -// Розбиваємо рядок на масив по разделителю у вигляді переходу на новий рядок
$ new_likes = array() -// Масив лайків з новими даними
for($ i =0- $ i lt; count($ likes) - $ i++){
$ parts = explode("=", $ likes[$ i]) -// Розбиваємо рядок виду "id_статьі = колічество_лайков" за знаком одно
if($ parts[0]== $ _POST["Id"]) $ parts[1]+=1-// Збільшуємо число лайків на 1 у статті з переданим ID
$ new_likes[]= implode("=", $ parts) -// Формуємо новий рядок виду "id_статьі = колічество_лайков" і додаємо в масив
}
$ text = implode(" N", $ new_likes) -// Перетворимо масив з новими даними в рядок з роздільником у вигляді переходу на новий рядок
echo file_put_contents("Likes.ini", $ text) -// Записуємо рядок в файл і виводимо false у разі невдачі
?gt;От і все. Однак, безумовно, даний скрипт вкрай далекий від того, що повинно бути. Далі цю структуру вже треба нарощувати залежно від Ваших цілей. Що, швидше за все, буде потрібно ?. По-перше, захист від накруток, хоча б записувати в cookie інформацію про те, що користувач вже у цій статті поставив лайк. Або можна дозволити ставити лайки тільки зареєстрованим користувачам (як це робиться в соціальних мережах).
Також зверніть увагу, що в даному скрипті при спробі додати лайк до статті, якої немає в INI-файлі, нічого не вийде. Ця проблема вирішується додаванням нового рядка в INI-файл, якщо в процесі циклу так і не було виявлено шуканої статті. Але, з огляду на, що все одно лайки треба зберігати в базі даних, я прибрав цю додаткову функціональність з коду.
Ось таким чином робиться система лайків на PHP і Ajax.
Вийшов відеокурс "jаvascript, jquery і ajax з нуля до гуру"
Як зробити 3d модель об`єкта на jаvascript.
Як динамічно отримувати коментарі з бази даних.
Що таке long-polling, websockets, sse і comet
Як зробити динамічне додавання коментарів, використовуючи ajax.
Як зробити коментування на html-сайті
Коли варто використовувати jquery
Як зробити реєстрацію та авторизацію користувачів на сайті
Як зробити сторінку користувача
Як зробити чат
Php-скрипт для завантаження курсів валют
Відстеження лайків
Перевірка зайнятості логіна на ajax
Відправка асинхронних запитів на jquery.
Чи варто зберігати зображення в бд
Відправка post-запитів через jаvascript
Динамічне завантаження файлів на jquery
Відправка ajax-запиту на інший домен
Nodejs. Template engine. Частина 1.
Читання ini-файлу в php
Винагороди за консультування на сайті
Як динамічно отримувати коментарі з бази даних.
Nodejs. Template engine. Частина 1.
Відправка асинхронних запитів на jquery.
Відстеження лайків
Ajax запити за допомогою методів $ .post () і $ .get ().
Як зробити динамічне додавання коментарів, використовуючи ajax.
Винагороди за консультування на сайті
Чи варто зберігати зображення в бд