Вот код, который отвечает за голосование и показывает звезды рейтинга.
Но пользователь может голосовать (кликать) сколько угодно. Как ограничить клик до 1 раза?
jQuery(document).ready(function($)
{
$(document).on('mouseover', '.ratings_stars', function()
{
$(this).prevAll().andSelf().addClass('ratings_over');
$(this).nextAll().removeClass('ratings_vote');
$(this).nextAll().removeClass('ratings_over');
})
$(document).on('mouseout', '.ratings_stars', function()
{
$(this).nextAll().removeClass('ratings_over');
})
$(document).on('click', '.ratings_stars', function()
{
var starvalue = jQuery(this).attr("starvalue");
var data_id = jQuery(this).parent().attr("data_id");
jQuery(".star-rating"+data_id+" .total_votes").addClass("loading");
jQuery(".star-rating"+data_id+" .total_votes").html("");
jQuery.ajax(
{
type: 'POST',
url:star_rating_ajax.star_rating_ajaxurl,
data: {"action": "star_rating_record", "data_id":data_id , "starvalue":starvalue},
success: function(data)
{
jQuery(".star-rating"+data_id+" .total_votes").html(data);
jQuery(".star-rating"+data_id+" .total_votes").removeClass("loading");
}
});
});
});
JavaScript
Как сделать голосование для пользователя только один раз?
Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи.
Без регистрации -это сделать невозможно!
Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи.
Валерий Пашкевич
Без регистрации. Но может как то на время отложить выполнение второго голосования?
Валерий Пашкевич
Мне не надо сверхзащищенный код. Просто через куки!!! Вы можете подправить код и дописать проверку куки?
Baglan Saimasaev
А что если голосование сделать платным?)))
"Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи. "
Барашков стадо мееее....
Барашков стадо мееее....
Jaloladdin Saidnazarov
а что же ты, барашек, за мной повторяешь?)
Валерий Пашкевич
все можно сделать, просто не хватает у вас "знаний", я нашел много примеров для реализации и огромное количество плагинов! Бесят такие как вы!
Валерий Пашкевич
Вот код, в котором пользователь кликает
$(document).on('click', '.ratings_stars', function()
{
var starvalue = jQuery(this).attr("starvalue");
var data_id = jQuery(this).parent().attr("data_id");
jQuery(".star-rating"+data_id+" .total_votes").addClass("loading");
jQuery(".star-rating"+data_id+" .total_votes").html("");
jQuery.ajax(
{
type: 'POST',
url:star_rating_ajax.star_rating_ajaxurl,
data: {"action": "star_rating_record", "data_id":data_id , "starvalue":starvalue},
success: function(data)
{
jQuery(".star-rating"+data_id+" .total_votes").html(data);
jQuery(".star-rating"+data_id+" .total_votes").removeClass("loading");
}
});
});
Как запретить повтороное выполнение функции? Через куки или ip?
$(document).on('click', '.ratings_stars', function()
{
var starvalue = jQuery(this).attr("starvalue");
var data_id = jQuery(this).parent().attr("data_id");
jQuery(".star-rating"+data_id+" .total_votes").addClass("loading");
jQuery(".star-rating"+data_id+" .total_votes").html("");
jQuery.ajax(
{
type: 'POST',
url:star_rating_ajax.star_rating_ajaxurl,
data: {"action": "star_rating_record", "data_id":data_id , "starvalue":starvalue},
success: function(data)
{
jQuery(".star-rating"+data_id+" .total_votes").html(data);
jQuery(".star-rating"+data_id+" .total_votes").removeClass("loading");
}
});
});
Как запретить повтороное выполнение функции? Через куки или ip?
"Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи. "
Стадо ))
Стадо ))
да никак
Куки и ай-пи - это только для одноразового пользователя, который зашел, проголосовал и ушел с сайта - едва ли он будет сидеть и набивать статистику, просто по-дурацки кликая на одну и ту же оценку - быстрее сайт покинет.
А если говорим про такие вещи, как "лайк" на сайте с постоянными посетителями - тут явно без идентификации пользователя по его id не обойтись.
Пример. Проголосовал за материал другого пользователя. Спустя неделю, на него же наткнулся - и очень правильно сейчас на многих сайтах делают, меняя при каждом последующем нажатии "лайк" на "дислайк" - сразу голосующий видит, что уже голосовал.
Так что для Действительно полезной статистики - всё-таки следует и собирать её от зарегистрированных уникальных пользователей. Создание базы клиентов и их взаимодействие с сайтом - уже совершенно иная задача, совершенно иной проект.
А если говорим про такие вещи, как "лайк" на сайте с постоянными посетителями - тут явно без идентификации пользователя по его id не обойтись.
Пример. Проголосовал за материал другого пользователя. Спустя неделю, на него же наткнулся - и очень правильно сейчас на многих сайтах делают, меняя при каждом последующем нажатии "лайк" на "дислайк" - сразу голосующий видит, что уже голосовал.
Так что для Действительно полезной статистики - всё-таки следует и собирать её от зарегистрированных уникальных пользователей. Создание базы клиентов и их взаимодействие с сайтом - уже совершенно иная задача, совершенно иной проект.
Валерий Пашкевич
ребята.. не изобретайте велосипед. Все уже работает.. для движков написаны модули. Не знаете сути, не пишите ответы.
Кайрат Жусупов
Денис все правильно сказал, если вы не пишете код под банковскую сферу или что-либо подобное, то достаточно обычной куки и привязки к IP. это в 99% защитит вас от школохакеров)
Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи.
Если без регистрации, то никак. Так как пользователь запросто может потереть куки или сменить айпи.
Валерий Пашкевич
как это нельзя??? я вам могу скинуть миллион примеров, где можно!!! Я просто в коде не разбираюсь!
Можно сделать что бы он проголосовал, ему кажется что его голос засчитан, а на самом деле нет.
Никак
Никак
Нельзя это сделать
Никак
некак
Похожие вопросы
- Счетчик пользователей онлайн
- Помогите составить таймер на javascript чтобы отображалось время пребывания пользователя на странице.
- Зачем разработчики js сделали так что там где могли быть функции они добавили методы встроенных объектов.
- Ребята, вот сделал анимацию выпадающего списка. Все работает, но мне интересно ваше профессиональное мнение.
- Как сделать проверку через бесконечный цикл?
- Как сделать радномный выбор объекта? HTML, JS
- Как сделать рендер компонента на страницу в JSX?
- JavaScript Как сделать решение математических задач с несколькими числами?
- есть ли JS что-то типо for(i in array, array[i] == 1) сделать то-то else сделать другое
- Раскидать чётные и нечётные по разным массивам. Сделал, но может можно как то покороче сделать?