Форум русской поддержки Joomla!® CMS
08.12.2016, 04:10:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

JoomGallery 1.5.6.3 – блокировка повторного голосования - IP+cookie(обновлено) - Решение №2 (плагин)

 (Прочитано 12476 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« : 25.02.2011, 14:05:00 »

какой плагин качать то надо ? и что это за вложения в 33 посте ?
можно по подробней что и куда

Вынес в отдельную тему, чтобы не сбивать с толку посетителей темы, созданной ART-DELI

РЕШЕНИЕ для 1.5.6.3 - блокировка повторного голосования по IP или куки - плагин (обновлён) + небольшой хак

Переключение режимов IP-куки производится в настройках плагина (через менеджер плагинов)

Конечно, если в браузере пользователя стоит очищать куки при выходе (как у меня например  Grin) то куки тоже не помогут.

Имеет в бОльшей степени смысл, если разрешено голосование для незарегистрированных, так как для зарегистрированных там есть проверка по userid.

Хотя работает для обоих вариантов, причём как для обычного, так и для AJAX-голосования.

Если разрешено голосование для незарегистрированных пользователей - плагин не даёт проголосовать с тем же IP за ту же фотографию.

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

Выводится сообщение "Оценка не засчитана: Вы можете отдать свою оценку только один раз."
Повторно голос в базу не пишется.


Хотелось сделать малой кровью, плагином, используя привязку к событиям галереи (описание на сайте разработчика ).
К сожалению, не получилось без небольшого хака, поскольку у разработчика закрались явные ошибки в описании события onJoomBeforeVote (хотя в целом набор событий впечатляет - многое можно решить плагинами).


Итак, что нужно сделать:

Устанавливаем и публикуем плагинчик, в настройках плагина выбираем нужный режим (по IP или по куки)


+ в файле components\com_joomgallery\models\vote.php вставляем в районе строки 172 (перед комментарием // Trigger event 'onJoomBeforeVote'):

Код:
$row->picid = $this->_id;    $row->userip = $_SERVER['REMOTE_ADDR'];

Больше ничего не требуется для первого варианта.



Ещё один вариант - для более детальной проверки (не только IP, на случай, если на одном IP сидит не один пользователь) можно немного изменить хак, вместо

Код:
$row->userip = $_SERVER['REMOTE_ADDR'];

сделать например так:

Код:
$row->userip    = $_SERVER['REMOTE_ADDR'].'-'.gethostbyaddr($_SERVER['REMOTE_ADDR']).'-'.$_SERVER['HTTP_USER_AGENT'];

И далее в components\com_joomgallery\models\vote.php в строке 201 - то же самое.

Единственное ещё - в базе в таблице #__joomgallery_votes увеличить размер поля userip - дефолтное там varchar(15)

[вложение удалено Администратором]
« Последнее редактирование: 25.02.2011, 23:10:15 от SDKiller » Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #1 : 25.02.2011, 16:17:51 »

varchar(15) на что изменить надо
И где искать установленій плагин ? в плагинах Joomla или в самой JoomGallery
« Последнее редактирование: 25.02.2011, 16:58:10 от ArtTeam » Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #2 : 25.02.2011, 17:16:21 »

varchar(15) на что изменить надо

Можно varchar(255)

Цитировать
И где искать установленій плагин ? в плагинах Joomla или в самой JoomGallery

В админке в менеджере плагинов Joomla
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #3 : 25.02.2011, 18:00:43 »

спасибо
« Последнее редактирование: 25.02.2011, 18:06:26 от ArtTeam » Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #4 : 25.02.2011, 18:05:31 »

У меня работает.
В таблице #__joomgallery_votes в поле userip что пишется?
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #5 : 25.02.2011, 18:08:02 »

У меня работает.
В таблице #__joomgallery_votes в поле userip что пишется?
спасибо вроде уже все работает, а есть ли ограничение на количество голосов  varchar(255)
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #6 : 25.02.2011, 18:10:25 »

а есть ли ограничение на количество голосов  varchar(255)

Не совсем понял вопрос.
С включённым плагином у нас получается ограничение - один голос на одного проголосовавшего
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #7 : 25.02.2011, 18:18:58 »

при varchar(255) какое количество человек сможет голосовать ? 1000, 2000, ?
и как я понимаю при втором хаке динамичный айпи уже не помогает, получается привязка идет к  браузеру.
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #8 : 25.02.2011, 18:51:31 »

при varchar(255) какое количество человек сможет голосовать ? 1000, 2000, ?

От этого не зависит.
Длина поля увеличена, потому что у нас теперь вместо IP фиксированной длины получается строка, включающая в себя несколько характеристик.

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

С динамическим IP при обоих вариантах ничего не поделаешь.
При 2-м варианте привязка идёт комплексная по нескольким характеристикам, сделано это наоборот чтобы не отсеивать по IP других пользователей.
С другой стороны, при привязке только к USER_AGENT возможны совпадения этого параметра у разных пользователей.

Для динамического IP вариант только через куки.
Сделаю попозже и такой.
« Последнее редактирование: 25.02.2011, 21:28:19 от SDKiller » Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #9 : 25.02.2011, 19:13:13 »

Цитировать
Для динамического IP вариант только через куки.
Сделаю попозже и такой.
А когда планируете это осуществить ?
Записан
Beer
Moderator
*****

Репутация: +41/-1
Offline Offline

Сообщений: 1050


БИРУ - БИР!


« Ответ #10 : 25.02.2011, 19:23:01 »

Поставил по первому варианту - все работает путем!
SDKiller +1

Сделай пожалуйста кнопочку под фото для просмотра проголосовавших и поставленных ими оценок!
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #11 : 25.02.2011, 21:28:52 »

А когда планируете это осуществить ?

Сделал. Обновил файл плагина в первом посте.
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #12 : 25.02.2011, 23:44:59 »


Цитировать
Конечно, если в браузере пользователя стоит очищать куки при выходе (как у меня например  Grin) то куки тоже не помогут.
А как же тогда лучше провести фото голосование ?
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #13 : 26.02.2011, 00:13:34 »

А как же тогда лучше провести фото голосование ?

Ну что поделать )))

Захотят накрутить - накрутят.
Есть ведь ещё прокси-анонимайзеры, а еще бывают проги для подмены не только IP, но и user_agent и даже MAC-адреса сетевой карты.
А ещё есть буксы и САР, где люди за 1-3 цента покупают голоса.
Записан
cry_wolf
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #14 : 01.03.2011, 22:38:53 »

большое спасиба работает от повторного голосавание теперь остался вопрос если ставлю по кукам то я раз в сутки могу с одного компа голосовать за одну фотографию.... Тоже самое условие таже соблюдается и для зарегестрированых пользывателей...
« Последнее редактирование: 01.03.2011, 23:02:15 от cry_wolf » Записан
Garum
Завсегдатай
*****

Репутация: +47/-0
Offline Offline

Пол: Мужской
Сообщений: 664


Акула пера


« Ответ #15 : 14.03.2011, 00:10:20 »

Второй способ не работает у меня.
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #16 : 14.03.2011, 00:38:19 »

Второй способ не работает у меня.

Конкретнее. Я сам уже в способах запутался )))
Записан
Garum
Завсегдатай
*****

Репутация: +47/-0
Offline Offline

Пол: Мужской
Сообщений: 664


Акула пера


« Ответ #17 : 14.03.2011, 06:16:50 »

Ещё один вариант - для более детальной проверки (не только IP, на случай, если на одном IP сидит не один пользователь) можно немного изменить хак, вместо
Вот  этот. Делаю все как написано, и по IP не блокирует голосованиею
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #18 : 14.03.2011, 09:13:35 »

Вот  этот. Делаю все как написано, и по IP не блокирует голосованиею
Посмотрите в таблице #__joomgallery_votes - какие значения записываются в поле userip
Записан
vovat
Гость
« Ответ #19 : 14.03.2011, 23:25:02 »

Спасибо, все отлично работает! Вот бы еще сделать, чтобы после голоса форма голосования пряталась, а вместо нее надпись типа "Ваш голос принят и тп." Было бы совсем хорошо!
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #20 : 15.03.2011, 00:01:08 »

Вот бы еще сделать, чтобы после голоса форма голосования пряталась
В принципе это можно сделать на уровне шаблона с помощью js, назначив для кнопки голосования событие, по которому для формы голосования будет назначаться style.display="none"
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #21 : 16.03.2011, 12:40:01 »

SDKiller
А вы не могли бы добавить для голосования подтверждения по e-mail
Чтобы когда  проголосовал за фото ему на почту приходила ссылка для подтверждения голоса и тока после подтверждения голос был учтен.
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #22 : 16.03.2011, 16:36:23 »

SDKiller
А вы не могли бы добавить для голосования подтверждения по e-mail
Чтобы когда  проголосовал за фото ему на почту приходила ссылка для подтверждения голоса и тока после подтверждения голос был учтен.

Навскидку такое плагином не решить.
То есть отправку на email можно сделать плагином, а вот учёт голоса после подтверждения - это уже надо компонент ковырять
Записан
ArtTeam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 188


« Ответ #23 : 16.03.2011, 16:48:24 »

Навскидку такое плагином не решить.
То есть отправку на email можно сделать плагином, а вот учёт голоса после подтверждения - это уже надо компонент ковырять
Так єту проблему что не как не решить ?
И как можно для оценки прикрутить капчу ?

Записан
Beer
Moderator
*****

Репутация: +41/-1
Offline Offline

Сообщений: 1050


БИРУ - БИР!


« Ответ #24 : 06.05.2011, 18:29:02 »

 Как запретить юзеру голосовать за свою же фотку?
Записан
masyanya
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #25 : 25.07.2011, 23:03:39 »

Подскажите, пожалуйста, как сделать, чтобы пользователь мог голосовать только 1 раз и только 1 фото?
Записан
ziArt
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 16



« Ответ #26 : 27.07.2011, 00:23:48 »

Как сделать активным сразу два варианта зашиты и по айпи и куки?
Записан
Sharks_andron
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 62



« Ответ #27 : 20.11.2011, 11:06:53 »

Спасибо за труды.
Первый вариант применил - понравилось, посмотрим и дальше как будет.

Записан
quexx
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #28 : 23.11.2011, 13:42:07 »

Удалили меня что-то.. стало быть давно отсутствовал. Но не об этом..
Подскажите, пожалуйста, как сделать, чтобы пользователь мог голосовать только 1 раз и только 1 фото?
Дак оно так и есть.. или я чего-то не понял..?
Как сделать активным сразу два варианта зашиты и по айпи и куки?
Вот и у меня такая же проблема, то у кого-то куки каждый раз сбрасываются, то не возможно по IP проверить.. Думаю стоит дописать плагин третьим вариантом где можно выбрать IP+cookie сразу же.. Никто не против если я доделаю как будет минутка и сюда положу?
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #29 : 23.11.2011, 16:15:05 »

Да ради бога, заодно можете обновить под новую версию JG
Я давно не следил за её обновлениями
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet