Глюк при переголосовании - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Глюк при переголосовании

#1 Пользователь не на сайте   Boris ответил: »

 
 
  • Member
  • **
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 69
  • Регистрация: 15-Август 12
  • Репутация: 2
  • IPB version:3.3.x
 

Отправлено 15 Ноябрь 2014 - 14:57

В поиске не нашёл ничего. Может не так искал...

Излагаю суть косяка.
Есть опрос, в котором можно выбрать только одну опцию ответа.
Показывая результаты опроса, пишется что 18 пользователей проголосовало
Суммируя голоса всех опций голосования - получается 22 голоса.
Копнув таблицу ibf_voters, увидел что 4 юзера удалили свой голос и проголосовали заново.
Однако их первичный голос не удалился.
И получается, что окончательный результат голосования искажён.

Что делать???? Кроме как лишать опции удалять голос.


З.Ы. Версия 3.3.4
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 759
  • Регистрация: 20-Март 09
  • Репутация: 2 285
  • IPB version:3.1.x
 

Отправлено 15 Ноябрь 2014 - 17:54

Каким образом вы сумируете голоса, если для каждого варианта показывается сколько было отдано для него голосов? Если один пользователь проголосовал в одном вопросе за один вариант, а в другом за другой, то в сумме - у вас будут 2 голоса - 2 пользователя? Количество голосов не показывает количество проголосовавших . При удаления голоса запись в бд удаляется, при повторном голосовании запись добавляется. Если там две записи одного пользователя к одному опросу, то встает вопрос, почему он смог проголосовать второй раз если запись уже имеется?
Если вы считаете что у вас глюк - приведите конкретные примеры и подробно на них обоснуйте почему именно это глюк.
0

#3 Пользователь не на сайте   Boris ответил: »

 
 
  • Member
  • **
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 69
  • Регистрация: 15-Август 12
  • Репутация: 2
  • IPB version:3.3.x
 

Отправлено 15 Ноябрь 2014 - 18:13

В данной теме ТОЛЬКО ОДИН вопрос для голосования.
Я суммирую голоса, которые есть в результатах голосования. То есть, на данный момент проголосовало 24 пользователя.
Вариант1 - 8 голосов
Вариант2 - 6 голосов
Вариант3 - 5 голосов
Вариант4 - 9 голосов
Получается 28.

Просмотреть сообщениеsiv1987 15 Ноябрь 2014 - 17:54 сказал(а):

При удаления голоса запись удаляется, при повторном голосовании запись добавляется.


Я тоже думал что так и должно быть, но наткнулся на вот что:
Вот так выглядит запись в таблице ibf_voters в колонке member_choices у пользователя, который проголосовал один раз и больше не дёргался:
a:1:{i:1;a:1:{i:0;s:1:"3";}} - проголосовал за третью опцию в опросе
a:1:{i:1;a:1:{i:0;s:1:"2";}} - а вот тут за вторую

А вот так выглядит эта запись у тех, кто менял своё мнение:
a:1:{i:1;a:2:{i:0;s:1:"2";i:1;s:1:"3";}} - сначала за вариант 2, а потом за вариант 3
a:1:{i:1;a:2:{i:0;s:1:"1";i:1;s:1:"4";}} - сначала за вариант 1, потом за вариант 4

Таких записей ровно 4. Столько же сколько и разница между 28 и 24.
0

#4 Пользователь не на сайте   Boris ответил: »

 
 
  • Member
  • **
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 69
  • Регистрация: 15-Август 12
  • Репутация: 2
  • IPB version:3.3.x
 

Отправлено 15 Ноябрь 2014 - 18:37

Попробовал сейчас поиграться: проголосовать, удалить, проголосовать опять...
Всё это время мониторил что есть в таблице ibf_voters
Всё происходило правильно и при удалении голоса запись данного юзера пропадала. А при голосовании заново не формировалась более удлинённая запись как в четырёх случаях.
Вывод (промежуточный) - разница получается не из за переголосования.

Из за чего тогда???
Повторяю, в топике один опрос с одним вопросом с возможностью выбрать только один вариант
0

#5 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 759
  • Регистрация: 20-Март 09
  • Репутация: 2 285
  • IPB version:3.1.x
 

Отправлено 15 Ноябрь 2014 - 18:39

А точно не стоит галочка "Позволить пользователям выбирать более одного варианта ответа"? При повторном голосовании запись удаляется целиком, а тут массив с двумя вариантами ответа, что может быть только в случае с выбором более одного ответа, или кто-то когда-то менял опции опроса. Я подтверждения такого бага в 3.3x не нашел. Хм.. но вообще-то там проверка на тип вопроса нету, так что если школохацкеры захотят могут подменить тип полей и отправить ответ с мультивыбором для вопроса с единственным выбором. Тут одно из двух, ибо запись при отмене удаляется и она физически не может участвовать в повторном голосовании.
0

#6 Пользователь не на сайте   Boris ответил: »

 
 
  • Member
  • **
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 69
  • Регистрация: 15-Август 12
  • Репутация: 2
  • IPB version:3.3.x
 

Отправлено 15 Ноябрь 2014 - 18:58

а ларчик просто открывался :)
Так и есть. Мой косяк. Можно было выбирать более одного ответа. Но этим воспользовались только 4 человека.
Прошу прощение за беспокойство.
0

#7 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 759
  • Регистрация: 20-Март 09
  • Репутация: 2 285
  • IPB version:3.1.x
 

Отправлено 15 Ноябрь 2014 - 19:11

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

/admin/applications/forums/modules_public/extras/vote.php

			if ( count( $vote_cast ) < count( $poll_answers ) )
			{
				$this->registry->output->showError( 'topic_vote_not_enough', 10355 );
			}

Добавить ниже

			//-----------------------------------------
			// Check multi vote poll
			//-----------------------------------------
			
			foreach( $vote_cast as $question_id => $choice_array )
			{
				$answers = $poll_answers[ $question_id ];
				
				if( isset( $answers ) AND ! $answers['multi'] )
				{
					if( count( $choice_array ) > 1 )
					{
						$vote_cast[ $question_id ] = array( current( $choice_array ) );
					}
				}
			}

0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна