Система голосования открыта для незарегистрированных пользователей

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

Являются ли файлы cookie лучшим вариантом? Что делать, если у посетителя отключены файлы cookie?

Любые советы более чем ценны!

Большое спасибо П.


person user1225730    schedule 10.07.2012    source источник


Ответы (1)


Я могу придумать два способа сделать это: вы можете отслеживать пользователей по компьютерам или по IP.

Если вы отслеживаете с помощью компьютера, лучше всего использовать файлы cookie; однако это решение на стороне клиента, и, как вы указали, пользователи с отключенными файлами cookie могут обойти это.

Преимущество использования IP для отслеживания пользователей заключается в том, что оно выполняется на стороне сервера (поэтому пользователи не могут его отключить); однако существуют проблемы с тем, что несколько пользователей находятся на одном и том же общедоступном IP-адресе, пользователи перемещаются между местами и т. д. Это гораздо менее надежно, чем отслеживание с помощью файлов cookie.

На мой взгляд, куки - ваш лучший вариант. Это намного надежнее, и если у них не включены файлы cookie, вы можете проверить это и, возможно, просто не давать им голоса (или пропустить отслеживание IP).

person Palladium    schedule 10.07.2012
comment
На самом деле я думаю о файлах cookie, но помимо того факта, что файлы cookie могут быть отключены, мне интересно, как я могу отслеживать несколько данных в одном файле cookie. Я имею в виду, что есть несколько элементов, за которые посетитель может проголосовать на веб-сайте. Должен ли я создавать файл cookie для каждого голоса? Или рекомендуется также использовать Vote_table в базе данных, чтобы отслеживать систему голосования? - person user1225730; 10.07.2012
comment
Что вы можете сделать, так это создать файл журнала на вашем сервере (или запись в вашей базе данных, в зависимости от того, как вы работаете), который содержит набор данных для каждого уникального ключа (который генерируется, если у пользователя нет файла cookie). и поддерживается, если они это делают); затем вы сохраняете значение ключа в файле cookie. - person Palladium; 10.07.2012
comment
Моя идея заключалась в том, что при первом голосовании я создаю случайную строку из 30 символов (буквы и цифры) и записываю ее в файл cookie и в БД (в таблицу, посвященную системе tb_vote_system). В tb_vote_system я могу запомнить идентификатор элемента, за который проголосовали, и его таблицу (например, tb_web_sites). Так что у меня будет tb_vote_system с USER_ID_RANDOM_30CHARS | ID_ELEMENT_VOTED | TB_WHERE_THE_ELEMENT_DATA_ARE_STORED . Поэтому перед голосованием я проверю, существует ли файл cookie со строкой из 30 символов (если нет, значит, это первое голосование на моем сайте), если да, я проверяю, связана ли строка из 30 символов с ID_ELEMENT и TB_ELEMENT. - person user1225730; 10.07.2012
comment
Это звучит хорошо для меня и должно (надеюсь) работать. Попробуйте. - person Palladium; 10.07.2012