Как сделать лайки на сайте html
Перейти к содержимому

Как сделать лайки на сайте html

  • автор:

Не работают лайки с счетчиком HTML + JavaScript

Нерабочий счетчик

Как сделать, чтобы при нажатии на лайки и счетчик прибавлялся, и класс менялся. Получилось так, но счетчик обновляется лишь у последнего класса HTML:

 
Earth Hour: What You Need to Know
Create a blog post subtitle that summarizes your post in a few short, punchy sentences and entices your audience to continue reading. Welcome to your blog po.

0
blog1
Youth March for Climate.

0
Living Your Best Sustainable Life
Create a blog post subtitle that summarizes your post in a few short, punchy sentences and entices your audience to continue reading. Welcome to your blog po.

0
let heart = document.querySelectorAll('.heart'); let likesNumb = document.querySelectorAll('.likes-number'); for(let likesNumbs of likesNumb) < for(let hearts of heart) < hearts.onclick = function()< if(hearts.classList.contains('added'))< likesNumbs.textContent--; >else < likesNumbs.textContent++; >hearts.classList.toggle('added'); > > > 

Как сделать свои собственные лайки на сайте?

Нужно просто, чтобы посетитель мог один раз со своего ip поставить лайк и он бы сохранялся после перезагрузки страницы. Больше ничего с этими лайками делать не надо будет.

UPD: Возможность того, что человек может зайти с другого компьютера и ещё раз проголосовать не критична!

  • Вопрос задан более трёх лет назад
  • 5279 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 3

Taraflex

Ищу работу. Контакты в профиле.

Если сайт не очень популярный, то хватит следующих скриптов для исключения возможности проголосовать дважды.

Про привязку к ip забудьте.

Ответ написан более трёх лет назад
Нравится 4 1 комментарий

aldtimofeev

Александр Тимофеев @aldtimofeev Автор вопроса
если честно, мне сложно понять как из этого скомпоновать в итоге лайки

premas

Full-stack web-developer
Это делается на сервере.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺

Их надо сохранять куда-то (в базу) — т.е. одним фронтендом не обойтись. Используются ajax-запросы. Реализация со стороны фронтенда, примерно такая:

$('#like').click(function(e) < $.post . >);

А на бекенде уже обрабатывайте и проверяйте IP на дубликаты — зависит от выбранной платформы. Кстати если проверять по IP — все пользователи за NAT-ами не смогут ваши лайки использовать нормально.

Ответ написан более трёх лет назад
Нравится 1 1 комментарий

vanesxl

Проверять на IP вообще не вариант в современном интернете то! Легче отследить накрутку если только авторизованный пользователь может голосовать.

Пишем функцию лайков для постов блога

Пишем функцию лайков для постов блога

Для чего нужна функция лайков? В первую очередь, чтобы пользователи могли оценить Вашу запись, а также видеть, как её оценивают другие. Как сделать самостоятельно такой функционал — я расскажу в данном посте. Если Вам понравится данный пост — поставьте лайк! 🙂

Первым делом нам нужно создать таблицу в базе данных. Допустим, у нас сайт с базой данных MySQL. Если у Вас в проекте используется другая БД — перечень действий будет аналогичным, за исключением некоторых команд.

❶ Создаём таблицу. Назовём её likes . Если Вы используете phpMyAdmin — находясь в корне всех таблиц, ниже кнопки «Создать таблицу» вводим имя likes , количество столбцов ставим 3 , нажимаем » Вперёд «.

Первому столбцу вводим имя — id , тип — INT , Индекс — PRIMARY (во всплывающем окне нажимаем ВПЕРЁД), ставим галочку A_I (auto increment).

Второму столбцу вводим имя — client_ip , тип — VARCHAR , длина — 15 .

Третьему столбцу вводим имя — article_id , тип INT

Сравнение ставим utf8_general_ci , тип InnoDB .

Если Вы работаете с базой данных из консоли — находясь в режиме sql выполняем команду:

CREATE TABLE likes (id INT NOT NULL AUTO_INCREMENT, client_ip VARCHAR(15) NOT NULL, article_id INT NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_general_ci;

Далее, для оптимизации таблицы сделаем уникальными связку «IP пользователя» — «ID поста» . Это нужно для того, чтобы, если вдруг пользователь попытается проголосовать повторно за один и тот же пост, не происходило лишней записи в базу данных. Таким образом, с одного IP адреса проголосовать за один пост можно будет только один раз.

ALTER TABLE likes ADD UNIQUE INDEX (client_ip, article_id);

❷ Далее создаём файл, назовём его like.php

В файле первым делом создаём подключение к базе данных:

$link = mysqli_connect('имя_хоста', 'имя_пользователя', 'пароль', 'имя_БД'); $link->set_charset('utf8'); $link->query("SET NAMES utf8 COLLATE utf8_general_ci"); ?>

Если у Вас уже есть подключение к базе данных в отдельном файле, то просто подключаем этот файл через requi re_once() .

Затем в файле like.php создаём переменные и делаем запрос к БД на вставку новых данных:

$clientIp = $_POST['ip']; $article_id = $_POST['id']; $sql ; $query = mysqli_query($link, $sql); ?>

❸ Затем создаём PHP функцию для подсчёта лайков:

ction quantityLikes($postID) < // функция принимает ID поста global $link; $sql ; // выбираем IP из таблицы likes с уникальными значениями $query = mysqli_query($link, $sql); $likes = mysqli_fetch_all($query, 1); return $likes; > ?>

В результате вызова данной функции мы получим ассоциативный массив со значениями вида:

Array ( [0] => Array ( [client_ip] => 77.111.247.27 ) [1] => Array ( [client_ip] => 80.92.29.98 ) . )

Поскольку мы передавали ID конкретного поста, то мы получаем список IP-адресов только для данного поста.

❹ При загрузке страницы нам нужно определять, голосовал ли данный пользователь ранее за данный пост. Т.е. нам нужно определить его IP-адрес и проверить, есть ли он в массиве, полученном нами выше. К сожалению, стандартная функция PHP in_array() не подходит для проверки вхождения значений в ассоциативных массивах, поэтому мы будем использовать свою функцию:

tion is_in_array($array, $key, $key_value) < $within_array = false; foreach($array as $k=>$v) < if(is_array($v)) < $within_array = is_in_array($v, $key, $key_value); if($within_array == true) < break; >> else < if($v == $key_value && $k == $key) < $within_array = true; break; > > > return $within_array; > ?>

Функция возвратит нам true или false в зависимости от того, будет ли присутствовать IP-адрес пользователя в массиве адресов ранее голосовавших пользователей. Вызывать функцию будем со следующими параметрами:

is_in_array($likesArr, 'client_ip', $_SERVER['REMOTE_ADDR'])

❺ Далее заходим в файл шаблона, формирующий наш пост и в верху файла пишем PHP-код:

$likesArr = quantityLikes($post['id']); // в функцию quantityLikes мы передаём ID текущего поста. В моём блоге - это $post['id']. В Вашем это будет другое значение $likes = count($likesArr); // считаем лайки с помощью подсчёта общего значения количества элементов массива ?>

Далее в html-разметке вставляем:

$likesArr, ‘client_ip’, $_SERVER[‘REMOTE_ADDR’])): ?> $likes?> $likes?>

Таким образом, уже при загрузке страницы мы выводим разные иконки для новых или голосовавших ранее пользователей: для новых стандартно используется с пустым сердечком, для голосовавших — с заполненным. Также выводим в разных случаях разный title .

В data-параметрах для новых пользователей мы указали IP-адрес и ID данного поста. Эти параметры мы будем использовать в javascript-запросе к серверу при нажатии на иконку лайка.

  

❼ И напоследок, минимальный набор стилей:

.icon_head < height: 15px; width: 15px; cursor: pointer; >.noClick < pointer-events: none; /* делаем элемент некликабельным */ >

В итоге мы имеем удобный функционал:

  • считающий лайки;
  • с уникальными значениями в базе данных;
  • с возможностью проголосовать 1 раз только с одного IP;
  • не требующий никаких авторизаций через социальные сети или сервисы;
  • не требующий зависимостей и сторонних библиотек.

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
W e b d e v e l o p m e n t b l o g !

Кнопка «Мне нравится» — рейтинг для сайта

Добавьте виджет кнопки Лайк на ваш сайт с помощью нескольких строк HTML-кода!

Позвольте посетителям голосовать, оставляя лайки и дислайки на вашем сайте!

Получайте мгновенную статистику и аналитику!

Получайте тысячи лайков и репостов!

Получить код Получить плагин
11 лет успеха!

41 тема

Плагины и руководства

WordPress

Joomla

Drupal

WIX

Weebly

Shopify

Squarespace

uCoz

Blogger

Tumblr

vBulletin

44 языка

Google Rich Snippets

Сделайте ваш сайт привлекательным для посетителей в результатах поиска!
Повысьте рейтинг в поисковых системах!
Увеличьте число кликов!

Google Rich Snippets

Произвольные темы

Для мобильных

92 параметра

  • Вам не нужно разрабатывать скрипт кнопки «Мне нравится» и «Не нравится» самостоятельно — просто скопируйте код кнопки «Мне нравится» и вставьте в HTML-код своего сайта.
  • Настраивайте кнопку «Мне нравится» полностью под свои нужды.
  • Задавайте произвольные тексты для кнопок лайк и дислайк.
  • Настраивайте внешний вид с помощью CSS.

Поделиться

Поделиться

Проголосовав, пользователи могут поделиться ссылкой в социальных сетях: ВКонтакте, Одноклассники, Twitter, Facebook и т.д.

Онлайн-отчёты

Онлайн-отчёты

Статистика голосования

Статистика голосования

График голосов

График голосов

Сбор пожертвований

Выводите кнопки «Отблагодарить рублём» во всплывающем окне и собирайте пожертвования без каких-либо комиссий!

Асинхронная загрузка

Кнопка «Мне нравится» загружается асинхронно, поэтому не замедляет работу вашего сайта.

Асинхронная загрузка

REST API

  • Получайте статистику по лайкам для вашего сайта в форматах JSON, CSV и HTML с помощью простейшего REST API.
  • Изменяйте количество лайков и дислайков для кнопок на вашем сайте.

Генератор кода кнопки «Мне нравится»

Тарифный план сайта

Отзывы

Просто упомяните @likebtn в Твиттере и мы добавим ваш отзыв

Партнёрская программа

Зарабатывайте деньги с LikeBtn! Разместите нашу реферальную ссылку или баннер на веб-сайте, получайте вознаграждения в виде 25% пожизненно от всех платежей, сделанных привлечённым клиентом (в том числе от всех его будущих платежей по продлению тарифных планов). Реферальные вознаграждения выплачивается вам через PayPal (для России только на счета категории Личный) в конце каждого месяца. Что если у меня нет счета PayPal? Начать зарабатывать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *